15
Clean Code 8경계 2012 02. 18 이상우

Clean code 8장

Embed Size (px)

Citation preview

Page 1: Clean code 8장

Clean Code 8장

경계

2012 02. 18

이상우

Page 2: Clean code 8장

이 장에서는...

사용자의 요구에 맞춰 설계하고,

코드를 사용하거나, 수정되어 질 때

많은 손실이 발생되지 않도록 하는 것이다

.

Page 3: Clean code 8장

• 공급자는 여러 방면으로 많은 사람들에게

유용하길 원하지만 사용자는 그들이 필요로

하는 기능에만 관심을 갖는다.

Using Third-Party Code

Page 4: Clean code 8장

• 기능과 위험

Using Third-Party Code

Page 5: Clean code 8장

• Map sensors = new HashMap();

• Sensor s = (Sensor)sensors.get(sensorId);

• Map<Sensor> sensors = new HashMap<Sensor>();

Sensor s = sensors.get(sensorId);

Using Third-Party Code

Page 6: Clean code 8장

public class Sensors {private Map sensors = new HashMap();

public Sensor getById(String id) {return (Sensor) sensors.get(id);

}

//snip}

Using Third-Party Code

Page 7: Clean code 8장

• Third-party code

짧은 시간에 많은 기능적인 도움을 준다.

• Exploring

Third-party code를 테스트 한다.

• Learning

문서, 프로그래밍을 통해 배우게 된다.

Exploring and Learning Boundaries

Page 8: Clean code 8장

• Third-party code

Learning log4j

Page 9: Clean code 8장

• Third-party code

Learning log4j

Page 10: Clean code 8장

• Third-party code

Learning log4j

Page 11: Clean code 8장

• Third-party code

Learning log4j

Page 12: Clean code 8장

• 비용이 들지 않는다.

• 지식을 얻는다.

• 이해를 높인다.

• 긍정적인 수익이 된다.

Learning Tests Are Better Than Free

Page 13: Clean code 8장

변경이 대표적인 예다. 우수한 소프트웨어 설계는 변경시에 많은 투자와 재작업이 필요없다.엄청난 시간과 노력을 요구하지 않는다. 통제하지 못하는 코드를 사용할 때는 너무 많은 투자를 하거나 향후 변경 비용이 지

나치게 커지지 않도록 각별히 주의해야 한다.

경계에 위치하는 코드는 깔끔히 분리한다. 또한 기대치를 정의하는 테스트 케이스도 작성한다. 이쪽 코드에서 외부 패키지를 세세하게 알아야 할 필요가 없다.통제가 불가능한 외부 패키지에 의존하는 대신 통제가 가능한 우리 코드에 의존하는 편이 훨씬

자칫하면 오히려 외부 코드에 휘둘리고 만다.

외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자. Map에서 보았듯이, 새로운 클래스로 경계를 감싸거나

어댑터 패턴을 사용해 우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하자

어느 방법이든 코드 가독성이 높아지며, 경계 인터페이스를 사용하는 일관성도 높아지며, 외부 패키지가 변했을 때 변경할 코드도 줄어든다.

Clean Boundaries

Page 14: Clean code 8장

Q/A

Page 15: Clean code 8장

END