TIL (DAY 8)
🔖 오늘 읽은 범위: 5장, 형식 맞추기
* 7일차는 Mission으로 나쁜 코드를 고치는 방식으로 진행 완료!
책에서 기억하고 싶은 내용
- 오랜 시간이 지나 원래 코드의 흔적을 더이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. (p96)
- 신문 기사처럼 작성하라. ...
소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다. (p98) - 개념은 빈 행으로 분리하라 (p98)
- 서로 밀접한 코드 행은 세로로 가까이 놓아야 한다는 뜻이다. (p100)
- 변수는 사용하는 위치에 최대한 가까이 선언한다. ... 지역 변수는 각 함수 맨 처음에 선언한다. (p101)
- 인스턴스 변수는 클래스 맨 처음에 선언한다. (p103)
- 변수 선언을 어디서 찾을지 모두가 알고 있어야 한다. (p103)
- 종속 함수. 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. (p104)
- 정렬이 필요할 정도로 목록이 길다면 문제는 목록 길이지 정렬 부족이 아니다. (p110)
- 좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이뤄진다는 사실을 기억하기 바란다. 스타일은 일관적이고 매끄러워야 한다. (p114)
오늘 읽은 소감 및 생각
- protected 변수의 개념만 배우고, 이 변수를 피해야 하는 이유가 있다고는 알지 못했다. 하지만 이 책에서 protected 변수처럼 패키지 차원에서 서로 언급이 가능한 변수는 그 존재가 의미 없다는 것이라 이야기한다. 어차피 한 패키지에서 다른 패키지에 위치한 변수를 언급해야한다는 것은 두 변수가 서로 연관성이 있다는 것인데, 그런 연관 있는 두 변수들을 따로 두는 것 자체가 나쁜 코드이기 때문이다.
- 이 책의 5장을 한 마디로 표현하자면, 좋은 코드는 사용자가 코드를 직관적으로 이해할 수 있으며, 스크롤이나 모듈을 왔다갔다 하지 않아도 되는 코드이다.
- 정말 띄어쓰기 하나, 엔터 하나가 코드의 가독성과 질을 나누는 기준이 된다는 점을 다시 한번 깨달았다. 개발자 각자의 스타일도 존중해야 하지만, 내가 쓴 코드를 읽어야 하는 미래의 다른 개발자들을 위해서 최대한 <Clean Code> 책에 맞추어 일관적인 스타일을 보여주는 것이 좋지 않을까.
- 이전에 자바 수업을 들으면서 교수님이 우리 과 학생들만을 위한 Checkstyle을 제공해주었다. 배웠던 내용을 토대로 꽤 엄격한 기준의 checkstyle이었는데, 덕분에 오류를 고치는데 시간이 오래 걸렸지만, 학생들의 과제 코드 스타일들은 모두 일관되었고, 형식을 잡아갈 수 있었다.
궁금한 내용이나 새로 알게 된 개념
- 가위 규칙 (scissors rule)
: C++에서 모든 인스턴스 변수를 클래스 마지막에 선언한다는 규칙. - 작가가 어셈블리어 프로그래머 시절에 코드를 가로 정렬했다는 사실이 센세이션 했다. 생각해보지 않은 방식은 아니나, 막상 눈으로 보니 너무 조잡해 보였기 때문이다. (가로정렬 예시:)
private boolean hasError;
private Request request; - 밥 아저씨의 형식 규칙
: <Clean Code> 저자가 사용하는 코드 큐칙을 코드로 직접 보여주었다. 해당 코드에서 정리한 내용은 아래와 같다.
local instance 들은 클래스 맨 앞에 입력한다.
'✍️ 글쓰기 > 📕 읽고' 카테고리의 다른 글
#노마드북클럽 | 클린 코드 (Clean Code) 11일차 (0) | 2022.03.04 |
---|---|
#노마드북클럽 | 클린 코드 (Clean Code) 9일차 (0) | 2022.03.01 |
#노마드북클럽 | 클린 코드 (Clean Code) 6일차 (0) | 2022.02.25 |
#노마드북클럽 | 클린 코드 (Clean Code) 5일차 (0) | 2022.02.23 |
#노마드북클럽 | 클린 코드 (Clean Code) 4일차 (0) | 2022.02.21 |
댓글