의미 있는 이름

우리는 변수, 함수, 패키지, 소스파일, 디렉토리 등 많은 곳에 이름을 붙인다.

의도를 분명히 밝혀라

좋은 이름을 지으려면 시간이 걸리지만, 좋은 이름으로 절약하는 시간이 훨씬 더 많다!

변수, 함수, 타입의 이름은 이 질문들에 모두 답해야 한다.

  1. 존재 이유는?
  2. 수행 기능은?
  3. 사용 방법은?
    주석이 필요하다면 의도를 분명히 드러내지 못한 것이다.
int d; // 경과 시간(단위 : 날짜)

이름 d는 아무 의미도 드러나지 않는다.
측정하려는 값과 단위를 표현하는 이름이 필요하다.

int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

그릇된 정보를 피하라

그릇된 단서는 코드의 의미를 흐린다.
나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안된다.

ex) 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면 accountList라고 명명하지 않는다.
accountGroup, Accounts 가 적당하다.

의미있게 구분하라

발음하기 쉬운 이름을 사용하라

genymdhms (generate date, year, month, day, hour, minute, second)
를 읽을 때는 "젠 와이 엠 디 에이치 엠 에스"라 읽었다고 한다. 혹은 "젠 샤 무다 힘즈"(ㅋㅋㅋㅋ)

만약 generationTimestamp 로 변경한다면 대화가 훨씬 편해질 것이다.

검색하기 쉬운 이름을 사용하라

문자 하나를 사용한다면 검색을 하기 힘들 것이다.
상수에도 상수명을 주는 것이 검색하기에 훨씬 편하다.

인코딩을 피하라

  • 헝가리식 표기법
  • 멤버 변수 접두어
  • 인터페이스 클래스와 구현 클래스
    • 인터페이스 클래스에는 이전에는 IShapeFactory 와 같이 접두어로 I를 붙였다.
    • 요즘은 인터페이스 클래스의 이름은 ShapeFactory를 사용하고 구현 클래스의 이름을 ShapeFactoryImpl 로 사용한다.

'스터디 > 클린코드' 카테고리의 다른 글

[Clean Code] 클린 코드(함수) - 6  (0) 2021.03.08
[Clean Code] 클린 코드 - 5  (0) 2021.03.08
[Clean Code] 클린 코드 - 3  (0) 2021.03.08
[Clean Code] 클린 코드 - 2  (0) 2021.03.08
[Clean Code] 클린 코드 - 1  (0) 2021.03.08

깨끗한 코드

프로그래머 수만큼이나 깨끗한 코드에 대한 정의 또한 다양할 것이다.

나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한다.
의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다.
성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다.
깨끗한 코드는 한 가지를 제대로 한다.
비야네 스트롭스트룹 - C++ 창시자

효율 : 속도만을 뜻하지 않는다. CPU 자원을 낭비하는 코드도 우아하지 못하다.
나쁜 코드는 나쁜 코드를 유혹한다.

깨끗한 코드는 메모리 누수, Race Condition, 일관성 없는 명명법, 오류 처리 등 세세한 사항까지 꼼꼼하게 처리하는 코드다.

깨끗한 코드는 작성자가 아닌 다른 사람도 고치기 쉽다.

깨끗한 코드는 주의 깊게 작성한 코드다. 이미 작성자가 모든 사항을 고려했으므로, 고칠 궁리를 하다보면 다시 제자리로 돌아오게 된다.

지저분한 코드를 손 볼때, 중복과 표현력만 신경써도 깨끗한 코드에 더 가까워진다.

새로운 코드를 작성하기 위해서 기존 코드를 보게 된다.
지금 바꾸려는 함수 후에 어떤 함수가 호출되는지?, 전에는 어떻게 동작하는지?, 하위 클래스에 해당 함수가 오버라이딩되었는지? 등등
코드를 짜기 위해 기존 코드를 읽는 시간이 훨씬 길다.
따라서 읽기 쉬운 코드가 매우 중요하다.

'스터디 > 클린코드' 카테고리의 다른 글

[Clean Code] 클린 코드 - 5  (0) 2021.03.08
[Clean Code] 클린 코드 - 4  (0) 2021.03.08
[Clean Code] 클린 코드 - 2  (0) 2021.03.08
[Clean Code] 클린 코드 - 1  (0) 2021.03.08
[Clean Code] 클린코드 - 0  (0) 2021.03.08

+ Recent posts