오늘 읽은 범위
- 6장 객체와 자료구조
책에서 기억하고 싶은 내용을 써보세요.
- 자료구조
별다른 동작 없이 자료를 노출한다,
새로운 자료구조를 추가하기 어렵다.
기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다
- 객체
동작을 공개하고 자료를 숨긴다
새로운 함수를 추가하기 어렵다.
기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.
- 기차 충돌
//전
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
//후
Option opts =ctxt.getOpthons();
File scratchDir = opts.getScratchDir();
final String outputDir = scratchDir.getAbsolutePath();
위와 같이 함수를 줄줄히 호출하는 코드를 기차충돌이라고 부른다.
각 함수를 끊어서 선언하는 방식으로 변경하면 좋다.
- 구조체 감추기
//전
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
//변경 1 -해당 방법도 노출되는 부분이 많다...
final String outputDir = ctxt.getAbsolutePathOfScratchDirectoryOption();
// outputDir를 쓰이는 코드를 보니 파일을 생성하기 위해서였군!
String outFiel = outputDir + "/" + classNm.replace('.','/') +".class";
FileOutputStream fout =new FileOutputStream(outFile);
BufferdOutputStream bos = new BufferdOutputStream(fout);
//변경 2 - ctxt 객체에서 해결하도록 변경
BufferdOutputStream bos = ctxt.createScratchFileStream(classNm);
내부 구조를 감출 수 있도록 코드를 변경한다.
변경 2 같은 경우 해당 코드의 히스토리까지 파악해야 하므로 연습이 많이 필요할 것 같다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.
짧은 분량인데 어려워서 여러 번 읽었다. 일단 많이 쓰는 기차 구조부터 피해보자.
절차적인 코드, 객체지향적인 코드는 각자 적합한 상황이 있으므로 최적의 조건을 선택하자.
'TIL' 카테고리의 다른 글
[TIL] CleanCode 9장: 단위테스트 (0) | 2022.05.09 |
---|---|
[TIL] CleanCode 7장: 오류처리 (0) | 2022.05.07 |
[TIL] CleanCode 4장: 주석 (0) | 2022.04.30 |
[TIL] CleanCode 3장: 함수 (0) | 2022.04.28 |
[TIL] CleanCode 2장: 의미있는 이름 (0) | 2022.04.25 |