| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 자기호출
- 문제풀이
- mirror
- 7장
- 4장
- 백준
- basis step
- N으로 표현
- 2장
- 프로그래머스
- programmers
- 1024
- 원의 방정식
- Repository
- 0장
- Clean code
- 기하학
- dp
- BOJ
- recursion
- 1011
- 재귀
- 클린코드
- 규칙
- Wiki
- 8장
- 수학
- 6장
- inductive step
- 3장
- Today
- Total
LeeA0의 공부 일기
[Clean Code] 1장. 깨끗한 코드 본문
[사담]
이번 장에서 제일 공감됬던 말은 '우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다' 였습니다 ㅎㅎ..
실제로 그 때에는 최선이라 생각했던 코드들도, 나중에 봤을 때 별로라 생각해 고쳐야겠다는 마음을 먹었었는데요. 다음 일을 하느라 급해서 아직도 리팩토링 못한게 많습니다 ㅠㅠ..
이 책을 읽고 열심히 공부해서 리팩토링을 해야겠다는 생각이 다시 드네요 ㅎㅎ..
[정리]
DSL (Domain Specific Language)
: 도메인에 특화된 언어,
특정 문제 표현 기법, 특정 문제 해결 기법에 사용할 목적으로 만든 프로그래밍 언어나 명세 언어
나쁜 코드의 악순환
출시에 바빠 코드를 마구 작성 -> 기능을 추가 -> 감당불가 -> 새로운 시스템을 설계하자는 의견 -> 새 시스템이 기존 시스템을 따라잡기까지 약 10년 -> 그 사이에 새 시스템 설계 팀원 변경 -> 다시 새로운 시스템을 설계하자는 의견 -> ...(무한반복)
깨끗한 코드란?
1. 비야네 스트롭스트룹 (Bjarne Stroustup)
- 우아하고 효율적인 코드 (보기에 즐거운 코드)
- 논리가 간단 -> 버그가 숨어들지 못함
- 의존성을 최대한 줄임 -> 유지보수가 쉬워짐
- 오류는 명백한 전략에 의거해 철저히 처리
- 성능을 최적으로 유지 -> 원칙없는 최적화로 코드를 망치는 것을 방지
- 한 가지를 제대로하는 코드
2. 그래디 부치 (Grady Booch)
- 단순하고 직접적인 코드
- 잘 쓴 문장처럼 읽히는 코드
- 설계자의 의도를 숨기지 않는 코드
- 명쾌한 추상화와 단순한 제어문으로 가득함
3. 데이브 토마스 (Dave Thomas)
- 작성자가 아닌 사람도 읽기 쉽고 고치기 쉬움
- 단위 테스트 케이스와 인수 테스트 케이스가 존재
- 의미있는 이름이 붙음
- 특정 목적을 달성하는 방법은 하나만 제공
- 의존성을 최소화하고, 명확히 정의
- 코드는 문학적으로 표현 -> 인간이 읽기 좋은 코드
4. 마이클 페더스 (Michael Feathers)
- 언제나 누군가 주의 깊게 짰다는 느낌을 주는 코드 -> 고치려고 살펴봐도 손 댈 곳이 없음
5. 론 제프리스 (Ron Jeffries)
- 모든 테스트를 통과
- 중복없음
- 시스템 내 모든 설계 아이디어를 표현
- 클래스, 메서드, 함수 등을 최대한 줄임
6. 워드 커닝햄 (Ward Cunningham)
- 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 코드 -> 코드가 그 문제를 풀기 위한 언어로 보인다!
|
|
![]() |
|
'Java > Clean Code' 카테고리의 다른 글
| [Clean Code] 3장. 함수 (미완) (0) | 2021.09.11 |
|---|---|
| [Clean Code] 2장 - 실습 (0) | 2021.09.02 |
| [Clean Code] 2장. 의미 있는 이름 (0) | 2021.08.29 |
| [Clean Code] 0장. 들어가면서 (0) | 2021.08.22 |
| [Clean Code] 시작일기 (0) | 2021.08.22 |
