티스토리 뷰
1. 자료 추상화
수많은 개발자가 아무 생각 없이 변수를 get / set 하는 메서드를 생성해 외부로 노출해요. 하지만 경우에 따라서 객체가 포함하는 자료를 표현할 때 더 좋은 방법이 있을 수 있어요. 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 해요. 아무 생각 없이 조회/설정 함수를 추가하는 것이 가장 나빠요.
2. 자료/객체 비대칭
객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉬워요. 복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생기는 데, 이때는 클래스와 객체 지향 기법이 가장 적합해요. 반면, 새로운 자료 타입이 아니라 새로운 함수가 필요한 경우도 생길 경우에는 절차적인 코드와 자료구조가 더 적합해요.
3. 디미터 법칙
모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다.
객체는 자료를 숨기고 함수를 공개해요. 즉, 객체는 조회 함수로 내부 구조를 공개하면 안 된다는 뜻이에요.
🚊 기차 충돌
아래와 같은 코드를 기차 충돌이라고 해요.
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
일반적으로 위의 코드는 조잡하다고 여겨져요.
나의 생각
6장은 사실 많은 내용이 있지 않지만 그 내용들이 크게 공감가지 않았던 것 같아요. 읽을 수록 책의 내용 자체가 Java 기준으로 작성되어 더 그렇다고 생각이 들었어요. 예를 들어, 바로 위의 기차 충돌의 경우 논쟁 가능한 의견이라고 생각해요. 특히 Rx에서는 이러한 코드가 수도 없이 많고, 오히려 간결함이나 흐름을 위해 위와 같은 구조로 작성하는 경우가 많다고 생각해요.
전체적으로 6장은 Java 등의 언어를 기준으로 작성된 책이라 기준이 조금 다를 수 있거나 크게 공감가지는 않는 내용이라 우선 가볍게 넘어가고, 경험을 쌓고 다시 보면 다르게 읽힐 것이라고 생각해요.
클린코드(Clean Code) by Robert.C.Martin
'개발 독서' 카테고리의 다른 글
[클린 코드] 8장 - 경계 (0) | 2021.12.09 |
---|---|
[클린 코드] 7장 - 오류 처리 (0) | 2021.12.08 |
[클린 코드] 5장 - 형식 맞추기 (0) | 2021.12.06 |
[클린 코드] 4장 - 주석 (0) | 2021.12.05 |
[클린 코드] 3장 - 함수 (0) | 2021.12.04 |
- Total
- Today
- Yesterday
- 토마토#백준알고리즘#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 미로 탐색#백준알고리즘#Python
- 파이썬알고리즘인터뷰#4장
- N으로 표현#DP#Programmers#Python
- 텀 프로젝트#백준알고리즘#Python
- 순열사이클#BOJ#Python
- filter#isalnum#lower
- django
- Triangle#Sorting#Codility#Python
- 날짜 계산#BOJ#완전탐색#Python
- 쿼드트리#BOJ#분할정복#Python
- PassingCars#Codility#Python
- 백준 알고리즘#BackTracking
- 섬의개수#백준알고리즘#Python
- 종이자르기#분할정복#BOJ#Python
- 나무자르기#BOJ#이분탐색#Python
- 병든 나이트#BOJ#탐욕법#Python
- Brackets#Stacks and Queues#Codility#Python
- 반복수열#백준알고리즘#Python
- API#lazy#
- Swift#Tuples#Range
- 랜선자르기#이분탐색#BOJ#Python
- 배열합치기#분할정복#BOJ#Python
- Distinct#Codility#Python
- 리모컨#완전탐색#BOJ#Python
- 터틀비치#리콘#xbox#controller
- 암호코드#dp#BOJ#Python
- django#slicing
- 공유기 설치#BOJ#이분탐색#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |