Backend
Algorithm
Project
ETC
codesche’s blog
/
개발 Series
/
[학습] 클린코드
/
CleanCode
Backend
Algorithm
Project
ETC
codesche’s blog
/
개발 Series
/
[학습] 클린코드
/
CleanCode
Share
Backend
Algorithm
Project
ETC
CleanCode
클린코드
Search
1. 철학
나쁜 코드가 나쁜 이유
•
생산성 저하
•
클린 코드
15. chap17 - 냄새와 휴리스틱
1. 책 내용 요약
15장 Junit 들여다보기
•
세상에 완벽한 코드는 없다
14. chap15 & chap16 - 라이브러리 분석을 통해 코드를 바라보는 시각 기르기
1. 책의 예제
명령형 인수 구문 분석기
코드 초안
•
모든 로직이 하나의 클래스에 들어가 있다.
13. chap14 - 점진적인 개선
1. 동시성 프로그래밍이란
동시성 프로그래밍
•
어플리케이션을 효율적으로 실행하기 위해 멀티코어를 온전히 활용하도록 구현하는 방식
•
외부 서비스의 응답을 기다리면서 아무일도 하지 않으면 CPU 사이클이 낭비됨
12. chap13 - 동시성
1. 창발적 설계란
창발성(Emergence)
하위 계층에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출연하는 현상
•
각각의 개미는 집을 지을 능력이 없지만, 작은 개미들의 상호작용을 통해 집이라는 결과물이 나오는 것처럼
작은 요소들의 상호작용 반복이 전체구조에 영향을 미친다
.
11. chap12 - 창발적 설계로 깔끔한 코드 구현하기
1. 관심사 분리
관심사 분리
construction(생성)과 use(사용)은 아주 다르다
•
소프트웨어 시스템은 (어플리케이션 객체를 제작하고 의존성을 서로 ‘연결’하는)
준비 과정
과 (준비 과정 이후에 이어지는)
런타임 로직
을 분리해야 한다.
10. chap11 - 관심사 분리 패턴들
1. 캡슐화되어야 한다
캡슐화 : 객체의 실제 구현을 외부로부터 감추는 방식
•
클래스를 개발할 때 기본적으로 구현을 감추고, 외부 객체와 상호작용하는 부분만 노출한다.
9. chap10 - 클래스 잘 설계하기
1. 테스트코드의 중요성
•
테스트 코드는 실수를 바로잡아준다.
•
테스트 코드는 반드시 존재해야 하며, 실제 코드 못지 않게 중요하다(테스트 코드 짜는 연습을 많이 해야 함)
•
테스트 케이스는 변경이 쉽도록 해야 한다. 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위테스트이다. 테스트 케이스가 있으면 변경이 두렵지 않다. 테스트 케이스가 없다면 모든 변경이 잠정적인 버그다. 테스트 커버리지가 높을수록 버그에 대한 공포가 줄어든다.
8. chap09 - 깨끗한 테스트 코드
1. 경계란
•
오픈소스, 라이브러리를 안쓰는 프로젝트는 없다.
•
우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다.
•
외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다.
7. chap08 - 경계
1. 예외 처리 방식
•
오류 코드를 리턴하지 말고, 예외를 던져라
•
예외를 던지고 처리하는 방식
6. chap07 - 오류 처리
1. 자료구조 vs 객체
•
예시 - Shape
5. chap06 - 객체와 자료구조
1. 포맷팅이 중요한 이유
•
가독성에 필수적이다
2. 클린코드 포맷팅
4. chap05 - 형식 맞추기
1. 주석을 최대한 쓰지 말자
주석은 나쁜 코드를 보완하지 못한다
•
코드에 주석을 추가하는 이유는 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내야 한다.
•
코드로도 의도를 표현할 수 있다.
3. chap04 - 코드를 보조하는 주석
1. SOLID
객체지향 설계의 5가지 원칙
1.1 SRP : 단일 책임 원칙
한 클래스는 하나의 책임만 가져야 한다.
•
클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.
2. chap03 - 함수
1. 나쁜 코드
성능이 나쁜 코드
: 불필요한 연산이 들어가서 개선의 여지가 있는 코드
의미가 모호한 코드
: 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드
중복된 코드
: 비슷한 내용인데 중복되는 코드들은 버그를 낳음
1. chap01 & chap02 - 깨끗한 코드, 의미 있는 이름