tevelop RSS 태그 관리 글쓰기 방명록
2021-08-26 14:50:36

궁극적으로 코드는 요구사항을 표현하는 언어이다.

대부분 시간과 업무에 밀려 대충 짠 후 나중에 정리하겠다고 하지만, 나중은 결코 오지 않는다!

나쁜 코드가 쌓일수록 생산성은 떨어진다.

가장 빨리 가는 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관을 들이는 것이다.

 

깨끗한 코드란?

 

비아네 스트롭 스트룹(C++ 창시자)

  1. 우아하고 효율적인 코드
  2. 논리가 간단한 코드 -> 버그가 숨어들지 못한다.
  3. 의존성을 최대한 줄인 코드 -> 유지보수가 쉬워진다.
  4. 오류는 명백한 전략에 의거해 철저히 처리한다.
  5. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다.ㅣ
  6. 깨끗한 코드는 한 가지를 제대로 한다.

 

- 우아한 코드

보는 사람이 보기에 즐거운 코드

 

- 효율

단순히 속도만을 의미하는 것 X / CPU 자원을 낭비하지 않는 코드도 포함.

 

- 오류처리

세세한 사항까지 꼼꼼히 신경 쓴다. 메모리 누수, 경쟁상태, 일관성 없는 명명법이 이에 속한다.

 

- 한 가지에 집중

각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않는다.

 

 

그래디 부치

  1. 단순하고 직접적인 코드
  2. 명쾌한 추상화, 단순한 제어문

 

- 가독성 강조

잘 쓴 문장처럼 읽히고 설계자의 의도가 드러나는 코드여야 함

 

- 추측이 아닌 사실에 기반

반드시 필요한 내용만 담도록

 

 

큰 데이브 토마스(OTI 창립자)

  1. 작성작 아닌 사람도 읽기 쉽고 고치기 쉬울 것.
  2. 단위 테스트 케이스와 인수 테스트 케이스가 존재할 것.
  3. 의미 있는 이름이 붙을 것.
  4. 특정 목적을 달성하는 방법은 여러 가지가 아니라 하나만 제공할 것.
  5. 의존성은 최소이며, 각 의존성을 명확히 정의할 것.

 

- 가독성

가독성뿐만 아니라 다른 사람이 읽고 고치기 쉬울 것 까지 강조한다.

 

- 최소

큰 코드보다 작은 코드에 더 가치를 두고 있음

 

 

마이클 페더스

  1. 주의 깊게 짰다는 느낌이 드는 코드. 고치려 살펴봐도 손댈 곳이 없으며 모든 사항을 고려한 코드

 

- 주의

깔끔하고 단정하게 정리된 코드, 세세한 사항까지 꼼꼼하게 신경을 쓴 코드, 주의를 기울인 코드

 

 

론 제프리스

  1.  

 

- 중복이 없다.

같은 작업을 여러 차례 반복한다면 코드가 아이디어를 제대로 표현하지 못한다는 증거. 더 명확하게 표현하도록 노력해야 한다.

 

- 표현

의미 있는 이름이 포함된다.

 

- 메서드 나누기

객체가 여러 기능을 수행한다면 여러 객체로 나눈다. 메서드가 여러 기능을 수행한다면 메서드 추출 리팩터링 기법을 적용해 기능을 명확히 기술하는 메서드 하나와 기능을 실제로 수행하는 메서드 여러 개로 나눈다.

(사실 메서드 나누기는 표현과 같은 맥락에 적혀 있었지만 내 생각엔 다른 이야기 같아 나눠 정리했다.)

 

- 집합에서 항목 찾기

직원 정보가 저장된 데이터베이스든, 키/값이 쌍으로 저장된 해시 맵이든, 배열이든, 프로그램을 짜다 보면 집합에서 특정 항목을 찾아낼 필요가 자주 생긴다. 이런 상황이 발생하면 추상 메서드나 추상 클래스를 만들어 실제 구현을 감싼다. 그러면 여러 가지 장점이 생긴다. 이제 실제 기능은 아주 간단한 방식으로, 예를 들어 해시 맵으로 구현해도 괜찮다. 다른 코드는 추상 클래스나 추상 메서드가 제공하는 기능을 사용하므로 실제 구현은 언제든지 바꿔도 괜찮다. 게다가 집합을 추상화하면 '진짜' 문제에 신경 쓸 여유가 생긴다. 간단한 찾기 기능이 필요한데 온갖 집합 기능을 구현하느라 시간과 노력을 낭비할 필요가 없어진다.

 

 

워드 커닝햄

  1. 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 것.
  2. 코드가 그 문제를 풀기 위한 언어처럼 보이도록 하는 것.

  1. 맨 처음 코딩을 했을 때 가장 어려웠던 부분은 중복되는 코드 없이 코딩 하는거였다. pr코멘트로 지적을 많이 받았던 부분이었다. 그때는 내가 코딩을 하면서도 뭘 하고 있는지 제대로 알고 있지 않으니 어떤게 필요한지, 어떤게 불필요한지 판단이 잘 안되었다. 중복되는 코드를 최대한 없애려고 많이 노력했었다. (아직도 노력중)
  2. 시스템 내 모든 설계 아이디어를 표현하는 부분이 특히나 어려운 것 같다.
  3. 내 생각에 제일 중요한 것을 꼽으라면 다른사람이 내가 작성한 코드를 봤을 때, 명확히 빠르게 이해하고, 수정하기 쉽게 하도록 하는것. 그리고 이게 가장 어려운 것 같다.

출처 : 로버트 C.마틴 저 / 박재호, 이해영 공역 - Clean Code

'개발서적 > CleanCode' 카테고리의 다른 글

[2장] 의미 있는 이름  (0) 2022.12.26
tevelop. Designed by 코딩재개발.