15. 설계의 의의와 설계를 대하는 방법
내용
유지 보수성
시스템이 정상 운용되도록 유지 보수하기가 얼마나 쉬운가를 나타내는 정도
레거시 코드
변경하기 어렵고, 버그가 생기기 쉬운 코드
버그가 발생하기 쉬운 구조
응집도 낮은 구조
코드 이해하기 어렵움
가독성이 낮은 구조
읽고 이해하는데 어렵고 시간이 소요됨
로직이 파편화 되어있음
나무꾼의 딜레마
제대로 설계하지 않으면, 로직 변경과 디버그에 많은 시간을 소비하게 됨.
소프트웨어와 엔지니어의 성장 가능성
엔지니어의 자산 = 기술력
레거시 코드는 발전을 막고,
레거시 코드는 고품질 설계 경험을 막고,
레거시 코드는 시간을 낭비하기 한다.
문제 해결하기
![[Pasted image 20250601164041.png]]
기술 부채는 보이지 않고, 마이너스 가치.
코드의 좋고 나쁨을 판단하는 지표
현재 소스코드의 좋고 나쁨을 판단하는 지표.
실행되는 코드의 줄 수
메서드 10줄 이내,
클래스 100줄 이내
순한 복잡도
조건 분기, 반복 처리, 중첩이 많아지면 복잡도가 커진다.
응집도
응집도가 높을 수록 변경 용이성이 높고, 좋은 구조
LCOM (Lack of Cohension in Methods)
결합도
모듈 간의 의존도를 나타내는 지표
'어떤 클래스가 호출하는 다른 클래스의 수'
청크
기억할 수 있는 정보 덩어리의 단위
인간이 한번 기억할 수 있는 개념은 4+-1
즉 클래스에서 다루는 개념이 4+-1 정도가 되도록 설계해야한다.
코드 분석을 지원하는 다양한 도구
Code Climate Quality
https://codeclimate.com/
http://itools.com/
설계 대상과 비용 대비 효과
무한적 리팩터링할 수 없음.
비용대비 효과가 높은 부분을 노려야함
코어 도메인
정리
나무꾼의 딜레마
제대로 설계하지 않으면, 로직 변경과 디버그에 많은 시간을 소비하게 됨.
현재 코드의 좋고 나쁨을 판단할 수는 있다.
인간이 한번 기억할 수 있는 개념은 4+-1
즉 클래스에서 다루는 개념이 4+-1 정도가 되도록 설계해야한다.
참고
https://product.kyobobook.co.kr/detail/S000202521361
Last updated
Was this helpful?