[Clean Code] 1. 깨끗한 코드

Youngwoo Lee·2022년 4월 17일
0

Clean Code

목록 보기
1/4
post-thumbnail

들어가며

"개발자라면 Clean Code, Clean Architecture 는 언젠가는 읽어보는 것이 좋다" 라는 말을 듣고 겁도 없이 덜컥 사서 읽은지 10개월 정도가 지난 것 같다. 당시에는 개발자가 되겠다는 마음을 먹은지 얼마 되지 않은 시절이였기에... 거의 모든 내용이 이해가 되지 않았다. iOS 개발 공부를 시작한지 1년이 넘었고, 프로젝트도 많이 해봤으니, 스스로 생각하기에 지금쯤 읽으면 조금 더 넓은 인사이트로 해당 책 내용들을 바라볼 수 있을 것다. 10개월 간 얼마나 많이 바꼈는지 점검하는 식으로 읽어보도록 해보자.


깨끗한 코드

첫 단원에서의 내용들은 대부분 "Clean Code가 뭐야?" 이다. 그리고 반대로 나쁜 코드는 무엇인지, 또 클린 코드를 작성하기 위해서는 어떤 것에 집중해야 되는지에 대해서 소개해주고 있다.

일단 초반 부에는 클린 코드의 중요성에 대해서, 그리고 나쁜 코드를 생산했을 때 저자가 겪었던 이야기에 대해서 소개해주고 있다.

  • 니쁜 코드를 생산하는 것은 현실적으로 어쩔 수 없다... 기한을 맞추기 위해서는 어쩔 수 없이 속도에 집중해야 하고 그럴 경우, 더 좋은 구조에 대한 고민이 줄어들기 때문에 나쁜 코드가 나올 수 밖에 없다...
  • 나쁜 코드가 계속해서 누적될 경우, 프로젝트의 유지개발 비용은 계속해서 증가되고 결국 나중에는 손을 쓸 수 없는 처지에 이른다.

뭐 대충 이런 내용들? 클린 코드가 프로젝트 유지 보수에 있어서 정말 중요하다는 내용인데, 사실 내가 궁금한거는 클린 코드가 뭔지, 그리고 클린 코드를 작성하는 방법이다.

깔끔하게 넘.어.가.자.


유명한 개발자들이 말하는 클린 코드의 가치

다음 내용으로 소개되는 것은 "클린 코드가 무엇인가?" 이다. 사실 어떤 코드가 좋은 코드인지는 사람마다 그 가치를 어디에 두냐에 따라 다른 거기에 각자의 영역에서 한 주름 잡았던 사람은 코드 작성시에 어떤 가치를 중점으로 작성했는지 알아보자.

1. 비야네 스트롭스트룹 (C++ 창시자)

  • 우아하고 효율적인 코드
  • 논리가 간단해서 버그가 생길 가능성이 없어야 한다.
  • 오류는 명백한 의거해서 철저히 처리
  • 성능을 최적으로 유지
  • 한 가지를 제대로 잘 함

2. 그래디 부치

  • 단순하고 직접적이다
  • 잘 쓴 문장처럼 읽힌다.
  • 결코 설계자의 의도를 숨지 않는 코드
  • 명쾌한 추상화와 단순한 제어문으로 구성됨

3. 데이브 토마스

  • 작성자가 아닌 사람도 읽고 코치기 쉬운 코드
  • 의미 있는 네이밍
  • 의존성은 최소이며 각 의존성은 명확히 정의
  • 코드는 문학적으로 표현해야 함
  • 테스트 케이스가 존재하는 코드

4. 마이클 패더스

  • 주의 깊게 작성한 코드
  • 세세한 사항까지 꼼꼼하게 신경 쓴 코드이다.

5. 론 제프리스

  • 모든 테스트를 통과하는 코드
  • 중복이 없는 코드
    -> 중복과 표현력만 신경 써도 깨끗한 코드라는 목표에 성큼 다가선다. 지저분한 코드를 손볼 때 이 두가지만 고려해도 코드가 크게 나아진다.
    -> 여러 기능을 수행하는 객체나 메서드를 찾아서, 객체가 여러 기능을 수행한다면 여러 객체로 나눈다. 메서드가 여러 기능을 수행한다면 메서드 추출로 분리한다.
  • 시스템 내 모든 설계 아이디어를 표현한다.
  • 클래스, 메서드, 함수 등을 최대한 줄인다.

6. 워드 커닝햄

  • 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행되는 코드

마무리

해당 글에는 적지 않았지만, 저자는 무조건적인 수용은 좋지 않다고 언급하고 있다. 어떤 가치를 중심으로 두느냐에 따라 클린 코드를 작성하는 방법도 변하는 것이기에 프로젝트마다, 상황마다 달라지는 것이다.

그렇기에 팀 마다 코드를 맞추기 위한 컨벤션이 존재하는 것이고, 리뷰를 통해 처음 정한 가치에 맞게 코드의 질을 유지하기 위해 노력하는 것이다.

사실상 해당 책을 읽는 이유... 즉, 클린 코드를 작성하는 방법은 이 세상에 정확하게는 없으며, 여러 가지 가치에 맞춰 클린 코드를 작성하는 방법에 대해서 익히고 상황에 맞게 적용할 수 있는 능력을 익히는 것이 클린 코드를 작성하는 길일 것이다. 다음 목차가 정말 기대되는 엔딩이다.

profile
iOS Developer Student

0개의 댓글