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