파이썬 Naming Convention - 3 편
Presriptive: Naming Convention (Cont.)
지난 포스팅에 이어, Prescriptive Naming Convention 을 이어갑니다
Desigining for Interface
인터페이스를 위한 설계에 대한 내용입니다.
언제나
클래스의 메써드와 인스턴스 변수들이
퍼블릭값일지 아닐지에 대한 결정을 해야합니다.
결정하기가 쉽지 않다면, non-public
값을 선택 합니다.
나중에 non-public
을 public
으로 바꾸는게, public
을 non-public
으로 지정하는것보다 쉽습니다.
Public vs Non-Public Attributes
Public attributs
(퍼블릭 속성)은 대외적으로 여러분들과 관계없는 클라이언트들이 클래스를 사용할것이 예상될때 사용합니다.
Non-ublic attributs
(논 퍼블릭 속성)은 제 3자에 의해서 사용되지 않을때 사용하는 속성들입니다. non-public
속성들은 나중에 수정되거나 삭제될수 있고. 수정이나 삭제에가 되지 않는다는 보장은 없습니다.
Public 의 반대말인 Private 이라는 단어는 쓰지 않습니다.
왜냐하면, 파이썬에서는 사실 어떤 속성도 private 속성을 가질수가 없습니다.
public 과 non-public 외에 또다른 속성 카테고리는 서브클래스 API (주로 protected
보호된속성) 입니다.
어떤 클래스들은 상속 혹은 확장 혹은 클래스의 동작이 수정되게끔 설계되어 있습니다
이런 클래스들을 설계할때는, 아래 사항들을 명시적으로 결정해야 합니다.
- 어떤 속성들을 public 으로 지정할지
- 어떤 부분들이 서브클래스 API 가 될것인지
- 어떤게 실질적으로 베이스 클래스로 사용될지
파이써닉한 스타일 가이드라인
이런점을 염두에 두고, 파이써닉한 가이드라인은 아래와 같습니다
- public attributes (퍼블릭 속성)들은 맨앞에 언더스코어를 가지면 안됩니다.
- 만일 public attribute 이름이 예약된 키워드와 충돌할때는, 속성이름 뒤에 하나의 언더스코어를 붙입니다.
- 단순한 퍼블릭 데이터 속성들은, 속성 이름을 노출하는게 제일 좋습니다
- 만일, 당신의 클래스가 서브클래스가 될 의도가 있고, 사용하지 않게 하고 싶은 속성들이 있다면, 이름을 지을때 언더스코어 2개를 앞에 붙이고, 뒤에는 붙여주지 않습니다 (name mangling 참조)
마치며..
아직까지는 subclass, public 혹은 private 속성들을 생각하게 될만큼 복잡한 코드를 다루지 않아서.
위의 가이드라인이 이해가 잘 가지 않습니다.
나중에 복잡한 클래스를 설계하게 되면, 그때 다시와서 봐야 할것 같네요.