이름을 잘짓자.

변수명을 잘짓자

  • 이름을 잘지으면 단순히 코드만 보고도 무슨 기능을 하는지 다 알수 있다.

  • 컨테이너 가 list라도 실제 컨테이너 유형을 이름에 넣지 않는게 바람직하다.

  • 일관성 있게 이름지어라

  • 이름 지을때 내 의도를 읽는사람이 알수 있게 하자.

  • 의미없는 단어를 넣지마라

  • pruduct란 클래스가 있을 경우 다른 클래스를 productInfo 나 productData라고 쓰지말자

  • 이건 개념을 구분하지 않은채 이름만 달리한 경우이다.

  • data나 info는 의미가 불분명한 불용어다.

  • 관례가 없다면 읽는사람은 product나 productInfo의 차이를 모를것이다.

  • 발음하기 쉽게 지어라

  • 그래야 기억하기도 쉽다.

  • 소스를 검색할때 검색이 잘되게 지어라.

  • 그래야 찾기도 쉬우니까.

  • 이름에 인코딩하지마라

  • 내 생각. (이런걸하는 제정신인 사람이 있는가 ? 암호화 시키는것이면 몰라도..)

  • 변수명에 type을 집어넣었을경우 변수의 type이 바꼈을때 변수명은 그대로 String이므로 변수명에 타입은 쓰지말자.

  • 접두어 쓰지말자.

  • 인터페이스에 접두어 I같은것을 넣지 않는것이 좋다고 생각한다 ( 작가생각 )

  • 구현클래스에는 impl 같은것을 붙이거나 앞에 C를 붙이는것이 인터페이스에 접두어 넣는것보다 좋다고 생각한다고 작가는 말한다.

  • for문의 반복변수 ijk까진 가능하다 근데 L은 절대 쓰지말라고한다

  • 클래스의 이름은 명사나 명사구가 적합하다.

  • manager processor data info 등과 같은 단어를 피하고 동사를 사용하지 않는다.

  • 메서드이름은 동사나 동사구가 적합하다.

  • postPayment, deletePage, save 등이 좋은 예

  • 접근자 변경자 조건자 는 javabean 표준에 따라 앞에 get , set , is를 붙인다.

    • 이 메소드는 데이터형 클래스에서 값 가져오거나 설정하거나 값 true false 체크할떄 쓰는그거같음
  • 생성자를 중복정의 할때는 정적 팩토리 메서드를 사용한다.

  • 메서드는 인수를 설명하는 이름을 사용한다.

  • 예)

  • 1번 ) Complex fulcrumPoint = Complex.FromRealNumber(23.0);

  • 2번 ) Complex fulcrumPoint = new Complex(23.0);

  • 1번소스가 2번소스보다 좋다.

  • 2번소스를 사용하지 못하게 할려면 생성자를 private이나 protect를 걸어버리자

  • 단 protect는 같은 패키지안에서 사용될수 있으므로 같은패키지안에서도 싫으면 private쓰자.

  • 의도를 분명하고 솔직하게 표현해라

  • 이상한 농담같은거나 기발한것들은 피하자.

  • 비슷한단어를 클래스들마다 다르게 쓰지말자 메소드도 마찬가지고

  • 일관성있게 이름짓자 get이면 get으로 다 통일 controller면 다 controller로

  • 하지만 위처럼 쓰라고했다고 기능이 다른데도 같게 쓰면 문제있는것이다.

  • 기능과 이름의 일관성을 유지하라.

  • 해법영역에서 가져온 이름을 사용해라.

    • 대충 전산용어 알고리즘이름 패턴이름 수학용어등을 사용해도 괜찮다는 뜻.
  • 적절한 프로그램용어가 없다면 문제영역에서 가져와야한다.

  • 클래스 내부에 firstName , lastName , street , city , state란 변수가 있을때

  • 한 메소드에서 state란 변수를 사용했을때 이 변수가 어떤 클래스의 일부라는 사실을 알수 있을까 ?

  • 클래스의 일부가 아니더라도 위에것들은 address와 관련된 것들이다.

  • 이 state란 변수가 address와 관련된것인걸 알수 있을까 ?

  • 모르기 때문에 state 앞에 addr이라는 접두어를 붙인다.

  • addrState

  • 공통으로 사용된 변수들의 연관관계를 알수 있게 앞에 접두어를 붙여주거나

  • 클래스 함수 이름 공간에 넣어 맥락을 부여한다.

  • 모든 방법이 실패했을때만 접두어를 넣어준다.

  • 예제를 보면 이해가 쉬워진다.

  • Gas Station Deluxe 라는 앱을 만든다고 가정했을떄 모든클래스의 이름을 GSD로 시작하겠다는것은 미친짓이다.

  • 의미가 분명한 경우에 한해 짧은이름이 더 좋다.

  • accountAddress와 customerAddress는 Address 클래스 인스턴스로는 좋은 의미이지만

  • 클래스이름으로는 별로다.

  • Address가 클래스 이름으로 적합하다.

  • 주소를 port mac, web으로 구분지어야 한다면

  • postalAddress, Mac , Url이란 이름도 괜찮다. 그러면 의미가 분명해진다.

결론 이름 잘지어라

'book > 클린코드' 카테고리의 다른 글

7장 - 오류처리  (0) 2020.11.27
6장 - 객체와 자료구조  (0) 2020.11.25
5장 - 형식 맞추기  (0) 2020.11.23
4장 - 주석  (0) 2020.11.22
3장 - 함수  (0) 2020.11.19

+ Recent posts