함수가 한 가지 일을 한다는 것
3장에서는 함수를 작게 만드는 것과 한 가지 일을 맡기는 것을 함께 읽었다. 메모에서 더 관심이 갔던 것은 줄 수보다 추상화 수준이었다.
한 함수 안에 상위 개념의 처리와 문자열을 붙이는 세부 동작이 섞이면 읽는 사람이 계속 관점을 바꾸어야 한다. 반대로 조건문 하나를 다른 이름의 함수로 옮겼다는 이유만으로 의미 있는 분리가 이루어진 것은 아니다. 당시에는 이 차이를 보며 추상화의 감각을 조금 붙잡았다고 적었다.
타입마다 달라지는 분기를 다형성과 팩토리 쪽에 모으는 예제도 남겼다. 다만 팩토리 패턴은 더 살펴봐야 할 내용으로 적어 두었다. 실제 프로젝트에서 적용해 검증했다는 기록은 아니다.
주석과 코드가 어긋날 때
4장에서는 코드가 바뀌어도 주석이 함께 바뀌지 않으면 잘못된 정보를 전할 수 있다는 문제를 읽었다. 주석을 늘리기 전에 함수 이름과 구조로 의도를 표현할 수 있는지 생각해 보라는 제안으로 받아들였다.
법적 고지, 구현의 이유, 주의할 결과처럼 코드만으로 충분히 전하기 어려운 내용은 따로 구분했다. 반면 코드를 그대로 되풀이하거나 예전 이력을 누적하는 주석은 읽을 때 도움이 되는지 다시 보게 되었다.
이는 모든 주석을 없애자는 결론으로 정리한 것이 아니다. 주석이 설명하는 사실과 현재 코드가 맞아야 한다는 점이 중심이었다.
형식을 맞추는 목적
5장에서는 소스 형식을 의사소통의 한 부분으로 읽었다. 위에서는 전체 개념을 보여 주고 아래로 내려갈수록 구체적인 처리로 들어가는 배치가 기억에 남았다.
파일의 줄 수나 빈 줄 규칙도 적었지만, 숫자 자체를 모든 코드에 적용할 규칙으로 삼지는 않는다. 독자가 이름과 배치를 보고 필요한 내용을 찾을 수 있게 하려는 목적에 더 주목했다.
private만 붙이면 구현이 숨겨지는가
6장에서는 비공개 필드에 getter와 setter를 모두 붙이는 것만으로 구현이 숨겨지는지 살펴보았다. 필드가 외부에서 직접 보이지 않아도, 외부 코드가 여전히 내부 표현을 알아야 한다면 추상화가 충분하지 않을 수 있다.
좌표를 저장하는 방식과 좌표를 다루는 동작, 연료량의 세부 값과 잔량이라는 개념을 비교하며 읽었다. 내부 값을 순서대로 꺼내게 하는 것과 필요한 일을 객체에 맡기는 것의 차이에 관심이 갔다.
노트에는 당시 작업하던 데이터 관리 구조를 떠올렸다는 짧은 표시도 있다. 그 연결이 실제 리팩터링이나 실행 결과로 이어졌다는 근거는 없어, 변경 성과로 설명하지 않는다.
객체와 자료 구조가 받는 변경은 다르다
데이터와 연산을 나눈 도형 예제에서는 새 연산을 추가하기 쉬운 대신 새 도형이 생기면 여러 연산을 수정해야 했다. 다형성을 사용하는 쪽은 새 도형을 넣기 쉬운 대신 공통 연산을 늘릴 때 각 타입을 바꾸어야 했다.
이 대비에서 어떤 변경을 자주 받아야 하는지가 중요하다고 읽었다. 객체와 자료 구조 중 한쪽이 언제나 우월하다는 결론으로 끝내지 않았다.
이어 디미터 법칙과 연쇄 호출, DTO와 활성 레코드에 관한 메모도 남겼다. 내부 값을 따라가며 탐색하는 것이 필요한지, 실제로 하려는 일을 맡기는 편이 나은지 구분하는 흐름으로 보았다.
컬렉션의 선택과 동작을 다룬 기존 자료구조 글은 그대로 둔다. 이 글의 객체·자료 구조 논의는 데이터와 동작을 어떻게 공개할지에 관한 독서 기록이다.
오류 처리와 외부 코드의 경계
7장은 가볍게 읽고, 오류 처리 로직이 필요할 때 다시 살펴보기로 했다는 짧은 기록만 있다. 그 이상으로 자세히 읽거나 구현했다고 덧붙이지 않았다.
8장에서는 외부 라이브러리가 제공하는 넓은 기능과 사용자가 실제로 필요한 기능 사이의 차이를 읽었다. 노트에는 Java Map을 넘겨받은 코드가 필요 이상의 동작까지 할 수 있다는 예제가 남아 있다. 외부 인터페이스를 그대로 퍼뜨리는 것이 적절한지 생각하는 출발점이었다.
원문
| 장 | 노션 원문 생성일 |
|---|---|
| 3장, 함수 | 2022-10-17 |
| 4장, 주석 | 2022-10-18 |
| 5장, 형식 맞추기 | 2022-10-18 |
| 6장, 객체와 자료 구조 | 2022-10-18 |
| 7장, 오류 처리 | 2022-10-23 |
| 8장, 경계 | 2022-10-23 |
작성일은 중심 원문인 3장 메모의 생성일이다. 책 예제의 원본 코드를 복제하거나 새 프로그램을 실행한 글이 아니라, 당시 남긴 요약과 생각을 한 편으로 묶은 독서 기록이다.