본문 바로가기
이것저것

클린코드 1~3장

by le_piee 2023. 6. 20.

1장

TPM 5S 5가지 규율

 

훌륭한 소프트웨어 기법은 집중,침착,사고 규율을 요구

 

1. 정리 : 적절한 명명법을 사용해 무엇이 어디에 있는지 알아야 한다.

2. 정돈 : 코드는 누구나 예상하는 위치에 있어야 한다.

3, 청소 : 과거 이력이나 미래 바람을 기억한 주석은 빠르게 제거하라

4. 청결 : 그룹 내 일관적인 구현스타일과 기법을 따라라

5. 생활화 : 관계를 따르고, 자기 작품을 자주 돌아보고 기꺼이 변경하라

 

작은 것에도 충실한 사람이 큰 것에도 충실하다.

-> 생활화 하라는 말 

 

대부들이 생각하는 클린코드

1. 설계자의 의도를 숨기지 않고 명쾌한 추상화와 단순한 제어문으로 가득해 잘 쓴 글처럼 읽힌다

2. 타인이 읽기 쉽고 고치기 쉽다. 테스트케이스가 존재한다 

3. 주의 깊게 작성한 코드. 시간을 들여 단정하게 정리된 코드

4. 중복이 없는 코드, 시스템 내 모든 설계 아이디어를 표현한다

 

종합적으로 정리하면 중복이 없고 읽기 쉬운코드.

결국 사람을 위한 코드를 작성해야한다는 뜻(?)

 

 

2장 의미 있는 이름

1. 의도를 분명히 밝혀라

- 변수나 함수, 클래스의 존재 이유는? 수행 기능은? 사용 방법은? 등을 계속 생각하며 이름을 지어라

- 사람들이 안다는 가정으로 생각하지말고 모른다는 가정으로 의도를 밝혀라

 

2. 그릇된 정보를 피해라

- 흡사한 이름을 사용하지 않도록 주의하자

- 일관성이 떨어지는 표기법도 그릇된 정보다

 

3. 의미 있게 구분하라

- 읽는 사람이 차이를 알도록 이름을 지어라

- accountData는 account와 구분이 안된다

 

4. 발음하기 쉬운 이름을 사용해라

- 발음하기 어려운 이름은 토론하기도 힘들다

- 프로그래밍도 사회활동의 일부다

 

5. 검색하기 쉬운 이름을 사용해라

- 이름 길이는 범위 크기에 비례해야 한다. 

- 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다

 

6. 인코딩을 피해라

- 인코딩을 넣으면 그만큼 이름을 해독하기 어려워진다

- 문제 해결에 집중하는 개발자에게 인코딩은 정신적 부담이다

- 인코딩 이름은 발음도 어렵고 오타가 생기기 쉽다 

 

7. 기억력을 자랑하지마라

- 명료함이 최고다 남들이 이해하는 코드를 내놓아라

 

8. 기발한 이름은 피해라

- 재미보단 명료한 이름을 택해라

 

9. 한 개념에 한 단어를 사용해라

- 한 개념에 여러 단어를 사용하면 나중에 찾기 어려워진다

 

10 .의미 있는 맥락을 추가하라

- 의미가 분명한 이름이 없는 경우도 있다. 생각나는게 없다면 접우더을 붙인다.

- firstName, lastName 등

 

 

3장 함수

 

1. 작게 만들어라

- 함수의 첫번째는 작게다 두번째는 더 작게다

 

2. 한가지만 해라

- 하나의 함수는 한가지 일만 해야한다

- 단 그 한가지를 잘 해야한다

 

3. 서술적인 이름을 사용해라

- 이름이 길어도 된다. 여러 단어가 쉽게 읽히는 명명법을 사용해라

- 함수 기능을 잘 표현하는 이름이면 된다

 

4. 부수효과를 일으키지 마라

- 한가지 일만 하는척 하면서 여러 일을 하지마라

 

5. 명령과 조회를 분리해라

- 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야한다

- 둘 다 하게되면 혼란을 초래한다

 

6. 오류코드보다는 예외를 사용해라

- 코드가 훨씬 깔끔하다

- try/catch는 생각보다 추하니 별도로 함수를 뽑아내는 편이 좋다

-> 정상 동작과 오류처리 동작이 섞임

 

7. 반복하지마라

- 코드도 길어지고 로직이 변하면 여러곳을 수정해야한다

 

8. 구조적 프로그래밍

- 모든 함수와 함수 내 모든 블록은 입구와 출구가 하나여아한다

즉, 함수는 리턴문이 하나여야한다

- 리턴, 브레이크 컨티뉴를  여러차례 사용해도 괜찮지만, goto는 하지마라

'이것저것' 카테고리의 다른 글

블로그 이사했습니다!!!  (0) 2023.09.15
항해플러스 1기 후기  (1) 2023.08.22
SQL Server 저장 프로시저 만들기  (0) 2022.12.19
컴파일(compile)과 인터프리터(interpreter)  (0) 2021.02.17
[Mac M1] brew(브루) 설치  (0) 2021.02.15