1장: 깨끗한 코드

TIL (Today I Learned)

2022.02.19 (SAT)

📕 오늘 읽은 범위

추천사 ~ 1장. 깨끗한 코드

💡 책에서 기억하고 싶은 내용

추천사

  • 소프트웨어는 80% 이상이 소위 "유지보수"다.

  • 책임 있는 개발자라면 제품 수명 주기까지 고려해야 한다.

  • 읽기 좋은 코드는 돌아가는 코드만큼이나 중요하다.

  • 소프트웨어 설계에서 재작업은 가치를 가져온다.

1장: 깨끗한 코드

  • 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. (p. 2)

  • 나중은 결코 오지 않는다. (p. 4)

  • 나는 우아하하고 효율적인 코드를 좋아한다. 깨끗한 코드는 한 가지를 제대로 한다. - Bjarne Stroustrup (p. 9)

  • 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다. (p. 10)

  • 깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. - Grady Booch (p. 10)

  • 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. - Big Dave Thomas (p. 11)

  • 깨끗한 코드는 주의 깊게 작성한 코드다. (p. 12)

  • 간단한 코드는 아래와 같은 코드이다. - Ron Jeffries (p. 13)

    • 모든 테스트를 통과한다.

    • 중복이 없다.

    • 시스템 내 모든 설계 아이디어를 표현한다.

    • 클래스, 메서드, 함수 등을 최대한 줄인다.

  • 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기. 내게는 이 세 가지가 깨끗한 코드를 만드는 비결이다. - Ron Jeffries (p. 14)

  • 보이스카우트 규칙 (p. 18-19)

    • 잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다.

    • "캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라"

    • 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다.

  • Agile Software Development: Principles, Patterns, and Practices(PPP)에서 이야기하는 원칙

    • SRP (The Single Responsibility Principle): 클래스에는 한 가지, 단 한 가지 변경 이유만 존재해야 한다.

    • OCP (The Open Closed Principle): 클래스는 확장에 열려 있어야 하며, 변경에 닫혀 있어야 한다.

    • LSP (The Liskov Substitution Principle): 상속받은 클래스는 기초 클래스를 대체할 수 있어야 한다.

    • DIP (The Dependency Inversion Principle): 추상화에 의존해야 하며, 구체화에 의존하면 안 된다.

    • ISP (The Interface Segregation Principle): 클라이언트에 밀접하게 작게 쪼개진 인터페이스를 유지한다.

✏️ 소감 및 생각

"나중은 결코 오지 않는다"

  • 이 말이 참 와닿았다. 지금까지 개발을 하며 '이 부분 개선할 수 있을 것 같은데... 바쁘니까 리펙터링은 나중에 하자' 라고 했던 순간들이 머릿속을 지나갔다.

  • 미래의 나에게 맡기지 말고, 현재의 내가 해결해야겠다고 다짐했다. 변화는 오늘부터!

"깨끗한 코드는 한 가지를 제대로 한다."

  • 내가 짠 함수는 한 가지를 제대로 할까? 하나의 함수에서 여러 가지 일을 하려고 한 것은 아닐까?

  • 깨끗한 코드가 될 수 있도록 이 말을 명심해야겠다.

❓ 궁금한 내용 | 잘 이해되지 않는 내용

  • PPP에서 이야기하는 원칙 5가지

    • SOLID 법칙 으로 알고 있으나, 그 내용을 깊이 알지 못했던 것 같다.

    • 이 부분을 사례와 함께 좀 더 깊게 알아봐야겠다

Last updated