반응형
좋은 코드란 무엇일까? - 좋은 코드, 나쁜 코드, 이상한 코드
좋은 코드
- 1. 시간복잡도가 낮은 코드
- 2. 공간복잡도가 낮은 코드
- 3. 문서화가 잘 되어 있는 코드
- 4. 유지보수가 용이한 코드
- 5. 중복이 없는 코드
- 6. 가독성이 높은 코드
- 7. 테스트하기 쉬운 코드
모두가 답을 알고 있다. 하지만 현실은?
테이블 1개 조회해야하는데, 내일까지 어드민 추가 해주세요.
최소 1달(야근하면 1주) vs. 하루(if문 추가)
풀어야하는 문제 -> 어드민에 조회 추가
처한 상황 -> 끔찍한 코드 + 하루
현재 처한 상황에서 비용이 적게드는 합리적인 선택
if문 한줄 추가, 나쁜 코드인가?
애매하다.
코드만 보았을 때는 분명히 나쁜 코드이다.
하지만 주어진 시간안에 문제를 해결하는 이상한 코드이다.
문제해결 Flow
- problem -> thinking -> solution(code) -> value
- time (비용) 발생
테이블 1개 조회해야하는데, 내일까지 어드민 추가 해주세요.
---Value---> if 한 줄 추가
코드는 이상하지만,
주어진 시간 내 문제를 해결하여 어떠한 가치를 만들어냄
또다른 사례
- 저사양 임베디드 시스템 : 용량이나 램 등 성능이 가장 큰 문제(최적화 중점)
- 고성능 서버군(AWS, azure) : 성능보다는 확정성 및 안정성있는 시스템 구축 및 모니터링에 중점
- 성장중인 초기 스타트업 : 좋은 코드를 만들기 위해 기능 하나를 개발하는데 몇 개월 씩 걸리는 경우 또는 일회성으로 사용하고 사라질 프로모션 코드를 만들기 위해 주어진 시간보다 훨씬 많은 시간을 소비한다면 좋은 코드라고 할 수 있을까? - 빠르게 시장에 내보내는 것이 가치를 창출
- 안정기에 접어든 유니콘 : 시스템 자체를 안정화시키고 확장성있게 만드는 것이 휠씬 중요
코드에 대한 판단은 풀어야하는 문제와 처한 상황에 따라 달라진다.
그렇다면 무엇이 좋은 코드인가?
- 1. 시간복잡도가 낮은 코드
- 2. 공간복잡도가 낮은 코드
- 3. 문서화가 잘 되어 있는 코드
- 4. 유지보수가 용이한 코드
- 5. 중복이 없는 코드
- 6. 가독성이 높은 코드
- 7. 테스트하기 쉬운 코드
- + Value (엔지니어링 관점, 가치 창출)
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 9-4. 왜 좋은 코드를 작성해야할까? (0) | 2022.03.16 |
---|---|
[Zero-base] 9-3. 레거시 코드 (0) | 2022.03.16 |
[Zero-base] 11-12. 디자인 패턴 정리 (0) | 2022.03.15 |
[Zero-base] 11-11. 책임연쇄(Chain of responsibility) (0) | 2022.03.15 |
[Zero-base] 11-10. 템플릿 메서드(Template Method) (0) | 2022.03.15 |