✍️ 글쓰기/📕 읽고

#노마드북클럽 | 클린 코드 (Clean Code) 3일차

ddubimoon 2022. 2. 20. 13:23

TIL (DAY 3)

🔖 오늘 읽은 범위: 2장, 의미있는 이름


책에서 기억하고 싶은 내용
  • 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. (p22)
  • 실제 컨테이너가 List인 경우라도 컨테이너 유형을 이름에 넣지 않는 편이 바람직하다. (p24)
  • 컴파일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다. (p25)
  • customerInfo는 customer와, accountData는 account와, theMessage는 message와 구분이 안 된다. 읽는 사람이 차이를 알도록 이름을 지어라. (p27)
  • 발음하기 쉬운 이름은 중요하다. 프로그래밍은 사회 활동이기 때문이다. (p27)
  • 인터페이스 클래스 이름과 구현 클래스 이름 중 하나를 인코딩 해야 한다면 구현 클래스 이름을 택하겠다. (p31)
  • 똑똑한 프로그래머와 전문가 프로그래머 사이에서 나타나는 차이점 하나만 들자면, 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다. (p31)
  • 클래스 이름과 객체 이름은 명사나 명사구가 적합하다. ... 메서드 이름은 동사나 동사구가 적합하다. (p32)
  • 생성자(constructor)를 중복정의(overload)할 때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름을 사용한다. (p32)
Complex fulcrumPoint = Complex.FromRealNumber(23.0);
오늘 읽은 소감 및 생각
  • 이름을 잘 짓는 것은 언제나 중요하다.
  • 최신 IDE 프로그램을 사용한다면 자동완성 기능을 100% 활용하기 위해 명확하고 상세한 이름이 더욱 중요하다.
  • 코드를 다시 읽을 때마다 주석이나 메소드가 덕지 덕지 붙어야만 한다면 결코 좋은 코드가 아니다. 처음 코딩을 시작했을 때 코드를 다시 읽으면 읽을수록 수정할 부분이 많았던 기억이 난다.
  • 학교 수업에서 클린 코드의 중요성을 정말 강조하던 선생님이 있었는데, 매번 이 책에서 들어준 예시와 같은 코드를 볼 때마다 🤮 이런 표정을 지었던 게 생각난다. 지금은 나도 그렇다 ㅋㅋㅋ 넘 빡센 선생님이라 원망의 마음도 많이 들었는데, 지금 돌이켜 생각해보니 참 배운게 많은 선생님이었다.
  • 아래와 같은 코드를 짰을 때 나도 a1, a2 대신 썼던 게 고작 firstParam, secondParam 이었다. 숫자가 아니라 영어로 썼다고 해서 의미가 깊어지는 게 아니었는데.. 이제야 또 깨달았다 🙃 (fyi, 아래 코드에서는 source, destination으로 바꿔주는 것이 좋다)
public static void copyChars(char a1[], char a2[]) {
for (int i = 0; i < a1.length; i++) {
     a2[i] = a1[i];
    }
}
  • class를 사용했다고 klass로 변수명을 지었다는 이야기는 정말 픽션같다. 이런 일이 있을 줄이야. 이쯤 되니 나중에 일하게 될 회사에서 legacy code를 볼일이 생기면 과연 어떨지, 회사에 정이 붙을지 떨어질지 걱정이 된다.
궁금한 내용이나 새로 알게 된 개념
  • 인코딩
    : 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것. ASCII 코드가 대표적 예시. (출처)
  • 헝가리안 표기법 (Hungarian Notation)
    : 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙. (출처) 이젠 한물 간 표기법.
  • 문제 영역 (Domain)
    : 해결하고자 하는 문제의 영역. 개발하고자 하는 소프트웨어의 요구사항, 문제 영역으로 생각할 수 있다. 예를 들어 쇼핑물을 만든다고 했을 때, 게시글, 댓글, 결제, 정산 등을 도메인이라고 할 수 있다. (출처)
  • 주소를 구성하는 firstName, lastName, houseNumber, city, state라는 변수를 개별적으로 사용할 때 address라는 좀더 큰 구조에 속한다는 사실을 보여주는 것이 좋다. 앞에 addr- 라는 접두어를 붙일 수도 있지만 Address라는 클래스를 생성하면 더 좋다.