클린코드 정리 - (1)

김재연·2024년 12월 1일
0

클린코드를 읽었을때 내용이 기억나지 않아 읽고 여기에 정리하고자 한다.

1장 깨끗한 코드

  • 나중에 개선하겠다 하고 지금 나쁜코드를 작성하지만 나중은 결코 오지 않는다.
  • 깨끗한 코드를 작성하기 위해서는 코드감각이 필요하다. 이를 통해 좋은 코드와 나쁜 코드를 구분한다. 코드감각이 없는 사람도 나쁜 코드를 구분만하고 코드감각이 있는 사람은 나쁜 코드를 어떻게 개선해야될지 안다.
  • 주변 코드를 읽지 않으면 새 코드를 작성할 수 없기 때문에 코드를 깨끗하게 작성해야 한다.

전문가들이 생각하는 깨끗한 코드의 특징

  • 꼼꼼하게 처리하는 코드, 특히 오류 처리 중요
  • 가독성
  • 단위 테스트, 인수 테스트가 존재
  • 의미있는 이름이 존재
  • 다른 사람이 고치기 쉽다
  • 중복이 없다.
  • 주의 깊게 작성한 코드

2장 의미 있는 이름

  • 의도를 밝혀라 : 좋은 이름이 있으면 절약하는 시간이 크다. 더 나은 이름이 있으면 개선하자
  • 그릇된 정보를 피해라 : 유사한 개념은 유사한 표기법을 사용해라. 일관성이 떨어지면 안된다.
  • 의미 있게 구분하라 : 클래스명 뒤에 Info, Data는 의미가 불분명한 불용어라서 사용하지 말자. ex) ProductInfo, ProductData
  • 검색하기 쉬운 이름을 사용하라 : 변수명이 짧으면 검색하기가 쉽지 않다. 이름 길이는 범위 크기에 비례해서 짓자.
  • 멤버 변수 접두어는 사용하지 마라. m_dsc 와 같이 m_ 접두어는 의미가 없다.
  • 클래스이름 : 명사, 명사구를 사용하고 동사는 쓰지마라
  • 메서드 이름 : 동사, 동사구가 적합, javabean 표준에 맞춰서 정의하자. 생성자가 여러개면 정적 팩토리 메서드를 사용해라.
  • 한 개념에 한 단어만 사용해라 : 동일한 역할을 수행하는데, 클래스마다 get, fetch, retrieve로 사용하면 혼란스럽다. 이름을 일관성있게 가져가라
  • 해법 영역에서 가져온 이름을 써라 : 모든 이름을 도메인 영역에서만 가져오지 말고 해법 영역에서도 가져와라. 코드를 읽는 사람이 개발자이기 때문에 JobQueue와 같은 이름을 써도 된다.
  • 문제 영역에서 가져온 이름을 써라 : 적절한 프로그래밍 용어가 없으면 문제 영역에서 이름을 가져와라

느낀점

깔끔한 코드를 작성하고 싶었는데, 이 부분에 대해 크게 노력은 안했던거 같다. 클린코드를 읽으면서 여기서 소개하는 방법들을 의식적으로 적용을 해봐야겠다. 좋은 이름을 짓는것에 대해서는 평소 인지하고 있었지만 검색하기 쉬운 이름, 한 개념에 한 단어만 사용하라는 이야기는 생각을 크게 못했다. 이번주에 적용할 수 있으면 적용해봐야겠다.

나만의 생각 및 질문

  • 프로젝트 기한 + 운영이슈 등 회사에서 일정이 여유롭지 않은데, 코드를 깨끗하게 작성하는 것과 프로젝트 기한중에 회사의 성공을 위해 프로젝트 기한이 더 중요하다고 생각이 든다. 코드를 작성할때 최대한 깨끗하게 작성하고, PR을 올릴때 한번 읽어보면서 부족했던 부분을 수정하면 좋을거 같다.
  • 지속적인 훈련을 통해 나중에는 한두번 작성으로 깨끗한 코드를 작성할 수 있는지도 궁금하다
  • 저자는 인터페이스에 IShapeFactory와 같이 I 접두어 붙이지 말라고 했는데, I가 있으면 인터페이스라는걸 직관적으로 알아서 좋았음
  • 생성자가 여러개면 정적 팩토리 메서드를 사용하라고 주장하는데, 지난주 팀내에서도 의견이 나왔는데, 문법으로 생성자를 제공하는데, 정적 팩토리 메서드를 써야되는지 고민됨. 팀내에서 구체적으로 이야기해봐야겠다.
profile
이제 블로그 좀 쓰자

0개의 댓글