오늘 읽은 범위

  • 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

+ Recent posts