클린 코드가 강조하는 것
- 유지보수성(maintability)
클린 아키텍처는?
- 품질에 관한 요구사항(비 기능적 요구사항)에서 유지보수성은 특별하다
- 유지보수하기 좋은 코드는 확장하기 쉽고, 안전하고, 신뢰할 수 있고, 좋은 성능으로 발전시킬 수 있고, 상호 호환성이 뛰어나서 변경하기 쉽다
- 유지보수성은 코드의 변경가능성과 동의어
개발 생산성과 유지보수성은 배타적이거나 대치하는 개념이 아니다.
그런데 왜 클린 코드를 하면 구현 능력과 속도가 떨어진다고 할까?
개발 생산성과 유지보수성은 서로 영향을 주는 관계이다
부채 은유 (Dept Metaphor)
- 개발하는 소프트웨어에 대한 현재 이해를 반영하는 코드를 작성하고 빠르게 출시
- 소프트웨어에 대해 배우게 된 것을 리팩터링을 통해서 코드에 반영
- 그러지 않으면 이자가 쌓여서 점점 큰 부담
부채의 상환 = 리팩터링
- 코드를 대충 작성하라는게 아님
- 부채는 나쁜 코드에 대한 변명이 될 수 없음
- 처음부터 리팩터링하기 좋은 코드를 만들어야 함
클린 코드 선순환
유지보수성이 좋은 코드는 변경가능성이 좋다
빠르게 변경되는 코드는 개발 생산성이 좋다.
선순환에 들어가기 위한 시작은 어떻게 해야할까 → 개발의 시작은 빠르고 간단하게
- 익숙한 기술로
- 핵심 기능에 집중
- 동작하는 코드
- 가장 단순한 코드를
- 리팩터링 하기 좋게 작성
일부 기능을 완벽하게 만드는 것으로 시작하지 않기
유지보수성과 생산성의 균형을 잡아줄 리팩터링을 잘 하려면 ? 테스트!
그런데 테스트를 작성하면 구현 능력과 구현 속도가 또 ..
테스트를 빠르고 효과적으로 작성하면서 개발하는 능력이 필요 ( Copilot 을 이용하거나 )
팀워크
유지보수성 + 생산성 + + 팀워크!! ⇒ 삼체 문제. 영향을 미치는 조건이 3가지
- 클린 코드의 많은 원칙은 팀의 동료 개발자와 관련된 것임
- 나만을 위한 클린 코드는 없다
- 클린코드의 많은 원칙은 상황에 따라 다른 기준을 가지고 있다.
팀과 함께 결정하고 탐험하고 학습하고 성장한다
함께 탐험하는 것을 즐거워 하는 팀. (제시카 커. Great teams make great people)
교양있는 개발자
자신의 말을 하더라도 다른 사람의 기분을 나쁘지 않게 하는 것
함께 코드를 작성하고 읽고 변경할 동료 개발자들에게 친절한 코드
항상 친절하세요. 동료에게. 자신에게