클린코드

01. 깨끗한 코드

jenny330 2022. 1. 23. 19:20

코드가 존재하리라

코드: 요구사항을 표현하는 언어

시키는 대로가 아닌 원하는 대로 돌아가는 기계는 존재할 수 없다. 

 

나쁜 코드

80년대 후반 Killer App을 구현한 회사가 있었으나, 급하게 마구 짠 코드로 인해 수많은 버그가 잡히지 않았고, 결국 회사는 망함. 

고행(wading): 나쁜 코드에 발목이 잡혀 고생하는 것?

 

나쁜 코드로 치르는 대가

나쁜 코드가 쌓일수록 팀 생산성은 떨어짐, 결국 생산성은 0에 수렴하게 된다..!

 

원대한 재설계의 꿈

재설계를 위해 꾸려진 새로운 "타이거 팀"은 새로운 시스템을 내놓아야할 뿐만 아니라 기존 시스템에 가해지는 변경도 모두 따라잡아야 한다. 

 

태도

관리자는 진실을 원한다. 일정에 쫓기더라도 대다수 관리자는 좋은 코드를 원한다. 좋은 코드를 사수하는 것은 프로그래머의 책임인다. 

 

원초적 난제

기한을 맞추는 유일한 방법은, 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 

 

깨끗한 코드라는 예술? 

깨끗한 코드를 구현하는 행위는 그림을 그리는 행위와 비슷?

깨끗한 코드와 나쁜 코드를 구분할 줄 안다고만 해서 좋은 코드를 짤 수 있는 것은 아님! "코드 감각"이 있어야 한다. 

 

 

깨끗한 코드란?

 

비야네 스트롭스트룹

(C++ 창시자)

우아하고 효율적인 코드. 논리가 간단한 코드. 의존성을 최대한 줄이기. 성능을 최적으로 유지. 깨끗한 코드는 한 가지를 제대로 한다. 

1. 우아한

2. 효율적인

3. 철저한 오류 처리

4. 한 가지를 잘 하기

 

그래디 부치

깨끗한 코드는 단순하고 직접적. 잘 읽힘. 깨끗한 코드는 설계자의 의도를 숨기지 않음. 명쾌한 추상화와 단순한 제어문

1. 가독성

2. 독자가 아! 당연하지! 무릎을 탁

3. 명쾌한 추상화

 

큰(?) 데이브 토마스

(OTT 창립자)

작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. 단위 테스트 케이스, 인수 테스트 케이스. 의미 있는 이름이 붙는다. 특정 목적을 달성하는 방법은 하나만 제공. 문학적으로 표현해야 마땅.

1. 가독성 + 남이 고치기 쉬운 코드

2. 테스트 케이스

3. 최소

4. 문학적

 

마이클 페더스

깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다. 고치려고 살펴봐도 딱히 손댈 곳이 없음. 작성자가 이미 모든 사항을 고려했기 때문이다. 

1. 주의 깊게 작성한 코드

 

론 제프리스

(거의 모든 플랫폼에서 거의 모든 언어로 코드를 구현해왔음, 그의 의견은 신중하게 고려해야.)

모든 테스트 통과. 중복이 없다. 시스템 내 모든 설계 아이디어를 표현한다. 클래스, 메서드, 함수 등을 최대한 줄인다. 

1. 중복 줄이기

2. 표현력 높이기

3. 초반부터 간단한 추상화 고려하기

 

워드 커닝햄

(위키, 피트, 익스트림 프로그래밍 창시자, 프로그래머의 대부)

코드를 읽으면서 짐작했던 기능이 모두 그대로 수행한다면 깨끗한 코드. 코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드. 

1. 읽으면서 놀랄 일이 없는 코드

2. 언어를 단순하게 보이도록 만드는 코드

 

우리들 생각(저자)

깨끗한 변수 이름, 깨끗한 함수, 깨끗한 클래스 등을 만드는 방법을 책 전반에 걸쳐 아주 상세하게 소개

 

우리는 저자다 

코드를 읽는 시간 : 코드를 짜는 시간 의 비율은 10:1을 훌쩍 넘어감!

새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 

그러므로, 읽기 쉽게 만들어야 한다!!

 

보이스카우트 규칙

"캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라."

 

프리퀄과 원칙

Agile Software Development: Principles, Patterns, and Practices

 

결론

결론은 연습이다!! 연습을 하자

 

'클린코드' 카테고리의 다른 글

04. 주석  (0) 2022.02.06
03. 함수  (0) 2022.01.30
02. 의미 있는 이름  (0) 2022.01.23