반응형

좋은 코드란 무엇일까? - 좋은 코드, 나쁜 코드, 이상한 코드

 

좋은 코드

  • 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 (엔지니어링 관점, 가치 창출)

 

 


반응형

+ Recent posts