2009-03-06 2 views
1

"this"스코프와 관련하여 AS3은 어떤 것이 가장 좋습니다/코딩 표준입니까? 하나 있습니까? 표준화에 도움이된다고 느끼고 있습니다. 가독성이 좋지만 때로는 "너무 많음"처럼 보입니다."this"스코프와 관련하여 AS3이 가장 좋은 연습/코딩 표준은 무엇입니까?

예를 들어

의 사용은 "이"는 그것은 확실히 필요가 없습니다

private var _item:Object; 

private var selectedItem:Object; 

public function set item(value:Object):void 
{ 
    this._item = value; 

    if (this._item["label"] == "doodad") 
     this.selectedItem = value; 
} 

public function set item(value:Object):void 
{ 
    return this._item; 
} 

답변

3

로컬 범위의 변수 (예 : 메서드 매개 변수)와 인스턴스 변수 간의 명명 충돌을 방지하려면 "this"가 필요하지 않습니다.

예제에서 이미 개인 변수를 표시하기 위해 밑줄을 사용하고 있으므로 실제로 두 번 똑같은 말을하기 때문에 "this"를 사용하지 않는 추가 이유가됩니다.

+0

그래, 나는 거의 "this"를 사용하지 않기로 결정했습니다. 왜냐하면 개발자들이 스코프간에 변수 이름을 재사용하도록 권장하기 때문입니다. 그 자체가 나쁜 습관입니다. –

1

? (나는 그것을 "이"없이 작동 알고있다),하지만 난 그것을 그 동의 정말 필요한 다음 가독성을 높일 수 있습니다. 더 동적 인 언어 (예 : Perl 및 Python)로 더 많은 작업을 수행하기 때문에 이러한 규칙은 변수 및 함수의 범위와 위치를 신속하게 결정하는 데 중요 할 수 있습니다. 이 대회가 당신에게 효과가 있다면, 나는 그것이 나쁜 것, 그 자체라고 생각하지 않습니다.

이렇게 가독성을 저해하는 어색한 규칙이 포함 된 코드를 다시 포맷하는 데 시간을 낭비했습니다.

예를 들어

: 나는이 함께 작업 한 사람이 같은 모든 과제 썼다 :

var foo:String= "bar"; 

이 (내가 선호 "="그래서 나는 분명히 연산자를 볼 수 있습니다) 자극했다, 그리고 나는 많은 시간을 보냈다 유지 관리해야하는 수천 줄의 코드를 정리했습니다. 그의 대회 (우리는 몇 번이나 논쟁했지만 그는 타협을 거부했다)가 내 일을 방해하는 경향이 있었다.

당신과 함께 일하는 사람들과 단합을 위해 노력하십시오. 개발자가 코드를 지원해야 할 필요가있는 경우이를 남겨 둘 가치가 없을 것입니다. 소스를 직접 사용하지 않을 사람이 있으면 코드를 이해하고 (어딘가에서) 문서를 작성하는 데 도움이되는 규칙을 사용하십시오. 그들은 의미한다.

1

팀에서 일하는 경우 팀의 코딩 규칙을 따르십시오.

하지만 개인적으로 나는 동음 이의어와 같이 정적으로 형식이 지정된 언어에서 가독성에 부정적인 영향을주는 과도함 인 "this"를 명시 적으로 사용합니다 (동적 언어는 다른 이야기입니다!).

클래스에는 실제로 한 가지 책임 만 있어야하므로 일반적으로 클래스에 너무 많은 속성이 없어야합니다. 메서드 내에서 일반적으로 세 가지 유형의 변수 인 임시 로컬 변수, 메서드 매개 변수 및 속성을 처리합니다. 메소드가 너무 길어서는 안되기 때문에 세 가지 유형의 차이점을 쉽게 알아낼 수 있어야합니다. 로컬로 정의되지 않고 매개 변수로 전달되지 않은 경우에는 속성입니다. 전체 방법이 화면에 맞지 않으면 아마 너무 길어질 것입니다!

동일한 이름의 매개 변수와 속성을 명확히하기 위해 필 요한 경우에만 "this"를 사용합니다.

+0

예, 변수/속성에 다른 범위의 동일한 이름을 지정하지 않는 표준을 따르는 것이 더 중요하다고 생각합니다. –

0

난 그냥 자동 완성 얻을, "이"너무 많이 사용하지 선호하지만, 때로는 이클립스에서 할 당신의 예제가 있다면

더 나을 (그것을 할 아마 최악의 이유를!) :

public function set item(_item:Object):void 
{ 
    this._item = _item; 

    if (this._item["label"] == "doodad") 
     this.selectedItem = this._item; 
} 
+0

필자는 Flex Builder 3를 주로 사용하며 단순히 자동 완성을 위해 CTRL + SPACE를 사용합니다. Eclipse 플러그인으로 어떻게 작동하는지 잘 모르겠습니다. –

+0

예, 요 전날에 발견되었습니다! – Iain

관련 문제