개발을 시작하는 이야기

클린 코드 1~3장 본문

사는 이야기

클린 코드 1~3장

Teiresias 2022. 4. 25. 18:10

처음으로 클린 코드를 읽고 있다. 약간의 유머가 섞인 책이라 프로그래밍 책 치고는 그렇게 어렵지 않게 술술 읽힌다. 만약 이게 소설이었다면 아마도 책을 펼친 당일 바로 다 읽을법한 흡입력이 있었다.

누구나 깨끗한 코드가 좋다는 것은 알고 있다. 하지만 누구나 깨끗한 코드를 작성할 수 있는 것은 아니다.

1장 깨끗한 코드

모든 프로그래머가 기한을 맞추려면 나쁜 코드를 양산할 수밖에 없다고 느낀다. 그들은 빨리 가려고 시간을 들이지 않는다. 진짜 전문가는 틀렸다는 사실을 잘 안다. 나쁜 코드를 양산하면 기한을 맞추지 못한다. 오히려 엉망진창인 상태로 인해 속도가 곧바로 늦어지고, 결국 기한을 놓친다. 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 깨끗하게 유지하는 습관이다.

책에서는 프로그래머는 저자라고 설명한다. 저자에게는 독자가 잇고, 저자에게는 독자와 잘 소통할 책임도 있다. 코드를 작성할 때는 자신이 저자라는 사실을, 나의 노력을 보고 판단을 내릴 독자가 있다는 사실을 기억하길 바란다.

 

그리고, 잘 짠 코드가 전부는 아니고 시간이 지나도 언제나 깨끗하게 유지해야 한다. 시간이 지날수록 코드가 좋아지는 프로젝트는 전문가에게 당연한, 전문가 정신의 본질이라 할 수 있다. 

2장 의미잇는 이름 

변수, 함수, 클래스 등등 모든 요소에는 이름이 필요하다. 하지만 이름을 짓는 것은 언제나 힘든 일이다. 심지어 네이밍을 해주는 사이트가 있을 정도이다. 이름은 존재 이유, 수행 기능, 사용 방법이 명확히 드러나 있어야 한다고 한다. 그릇된 정보는 피하고, 구분은 의미 있게 해야 한다. 자신의 기억력을 자만하지도 자랑하지도 말고, 기발하고 유쾌한 농담이 담긴 이름은 피해야 한다. 

  1. 의도를 분명히 밝혀라
  2. 그릇된 정보를 피해라
  3. 의미 있게 구분하라
  4. 발음하기 쉬운 이름을 사용하라
  5. 검색하기 쉬운 이름을 사용하라
  6. 인코딩을 피해라
  7. 자신의 기억력을 자랑하지 마라
  8. 기발한 이름은 피하라
  9. 한 개념 한 단어를 사용하라
  10. 말장난을 하지 마라
  11. 해법 영역에서 가져온 이름을 사용하라
  12. 문제 영역에서 가져온 이름을 사용하라
  13. 의미 있는 맥락을 추가하라
  14. 불필요한 맥락을 없애라

3장 함수

함수는 최대한 작고 간단하게 만들어야 한다. 하나의 함수는 한 가지 만을 해야 하고, 그 한 가지를 잘해야 한다. 

 소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. 먼저 생각을 기록한 후 읽기 좋게 다듬는다. 초안은 대개 서투르고 어수선하므로 원하는 대로 읽힐 때까지 말을 다듬고 문장을 고치고 문단을 정리한다. 함수를 작성할 때도 마찬가지이다. 처음에는 길고 복잡하다. 들여 쓰기 단계도 많고 중복된 루프도 많다. 인수 목록도 아주 길다. 이름은 즉흥적이고 코드는 중복된다. 하지만 저자는 그 서투른 코드를 빠짐없이 테스트하는 단위 테스트 케이스도 만든다. 

 그런 다음 코드를 다듬고, 함수를 만들고, 이름을 바꾸고, 중복을 제거한다. 메서드를 줄이고 순서를 바꾼다. 때로는 전체 클래스를 쪼개기도 한다. 이와 중에도 코드는 항상 단위 테스트를 통과한다. 이렇게 최종적으로 규칙을 따르는 함수가 얻어진다. 처음부터 탁 짜내지 않는다. 그게 가능한 사람은 없으리라.

  1. 작게 만들어라
  2. 한 가지만 해라
  3. 함수 당 추상화 수준은 하나로, 위에서 아래로 코드 읽기: 내려가기 규칙
  4. Switch문
  5. 서술적인 이름을 사용하라!
  6. 함수 인수
  7. 부수효과를 일으키지 마라!
  8. 명령과 조회를 분리하라!
  9. 오류 코드보다 예외를 사용하라!
  10. 반복하지 마라!

책에서는 하나하나 코드 예시를 보여주며 친절하고 유쾌하게 설명해준다. 내 프로젝트 코드에서 부족했던것들이 무엇인지 다시 한번 알 수 있게 되었다. 나는 코드를 블로그 글만큼이나 엉망진창 작성했었고, 그것을 규칙에 맞춰 수정을 안 했었다. 아니 변명을 하자면 못했다고 했던 것이 맞겠다. 아직은 정리된 수준 높은 코드를 많이 경험하지 못해서라고 조금 변명을 해보겠다. 책을 마저 읽고, 스유 강의를 다 듣고 나면 수정을 해봐야 할 듯하다.

'사는 이야기' 카테고리의 다른 글

맥 초기화 하기  (0) 2024.02.07
SeSAC 수강 후기  (0) 2022.11.23
인터넷이 나갔다.  (0) 2022.06.28
연휴를 맞이하여 오랫만에 가족여행  (0) 2022.05.09
안녕하세요.  (0) 2022.03.01