'martinfowler'에 해당되는 글 4건

  1. 2007/01/08 ExpressionBuilder (6)
  2. 2006/11/02 refactoring - martinfowler (8)
  3. 2006/10/26 command query separation (14)
  4. 2006/07/14 Domain Model (9)

2007/01/08 00:15 Developer

ExpressionBuilder

요즘 OOP를 좀 한다는 분들과 EDSL에 관심이 많은 분들은 아래와 같은 표현이 이제는 익숙할 것입니다. JMock API의 대화능력에 반하신 분들이죠?

http://martinfowler.com/bliki/DomainSpecificLanguage.html
http://www.mockobjects.com/files/evolving_an_edsl.ooplsa2006.pdf

customer.newOrder()
  .with(6, "TAL")
  .with(5, "HPK").skippable()
  .with(3, "LGV")
  .priorityRush();

하지만, MF의 글중에서 다음과 같은 글도 읽었을 것입니다.
1. 명령과 질의를 분리해라
2. 인터페이스는 간결화하고, 최소화해라.

http://martinfowler.com/bliki/CommandQuerySeparation.html
http://martinfowler.com/bliki/MinimalInterface.html

그러면, API를 디자인을 할때 헷갈리기 시작합니다. 도데체 나보고 어쩌란 얘기냐?
Fluent Interface를 구현하려면, 당연히 Human Interface화 되어야 하는거 아닌가?

물론, evolving_an_edsl.ooplsa2006에서도 관련 내용이 나와있지만, 이런 상황에서 MF아저씨는 다음과 같은 코드로 해결 방법을 가르켜줍니다.

facade or builder틱한 builder layer가 생기겠지만, 위의 원칙들은 지켜줄수 있습니다.

가만히 생각해보면, 알게 모르게 OOP에 있어서 구현과 인터페이스를 분리시켜주는 역할에 builder pattern이 자주 사용되고 있습니다. API를 만들어서 공개를 할때 신경써야 할게 너무 많네요..^^

public class OrderBuilder {
  private Order subject = new Order();
  private OrderLine currentLine;

  public OrderBuilder with(int quantity, String productCode) {
  currentLine = new OrderLine(quantity, Product.find(productCode));
  subject.addLine(currentLine);
  return this;
  }

  public OrderBuilder skippable() {
  currentLine.setSkippable(true);
  return this;
  }

  public OrderBuilder priorityRush() {
  subject.setRush(true);
  return this;
  }

  public Order getSubject() {
  return subject;
  }
}

북치고 장구치고 다하는 MF의 bliki의 글들이었습니다.

ExpressionBuilder
http://martinfowler.com/bliki/ExpressionBuilder.html

Posted by ologist

martin fowler의 refactoring!!

더 이상 말이 필요없는 책이다. 난 5년전쯤 이 책을 읽었는데, 그때는 책이 무척 어려웠지만, 간단간단한 습관에 관한 이야기는 머릿속에 남아있어서 기초서적에 남은 습관처럼 코딩을 하고 있었다.

이제는 무엇을 공부해야할지 알고, 어느정도 실무의 경험도 쌓이고, 리팩터링을 하는 일이 신규개발만큼 하나의 업으로 자리를 잡았다.

아주 잘은 아니지만, 과거에 비해서 실력도 더 좋아졌을 테고, 경험도 좀 쌓여있는 상태라고 나 자신을 평가를 하고, 다시 한번 이 책을 봤다. 과거에는 정말 긴장하면서 열심히 읽어도 어렵고, 큰 재미를 느끼기는 어려웠는데, 이제는 집에서 쉬면서 책을 읽어도 감동이 느껴진다. (5년동안 그냥 논거는 아니었군)

개발자들이 하던 고민을 그리고, 양질의 코드를 만들기 위해서 고민해야 하는 것들에 대해서 카탈로그 방식으로 정리를 해서 가독성도 뛰어나다.

fowler는 OOP와 자바진영에서는 거의 영웅의 반열에 들어서 있다. 이 책은 다른 리팩터링관련 서적의 레퍼런스로 불리우면서 시대가 바뀌어도 사랑을 받을만한 책이다.

코드의 방향성을 잘 모르는 초보개발자, 오래전에 읽어보신 중고급 개발자들도 다시 한번 읽어보길 추천합니다.

지금 우리팀은 refactoring의 책임과 업무에서 힘들어 하고 있다. 사실 지금 refactoring을 하는 시스템은 기본기를 철저하게 무시해서 너무도 건들기 어려운 시스템이다. 하지만, 아주 작은 부분이나마 방향성을 잡을수 있도록 도움을 주는게 이 책이 아닌가 싶다.

어떤 모습을 목표로 재작성을 한다는 것에 대한 힌트를 얻을수 있는 귀중한 내용들이 담겨있다.

Refactoring

마틴 파울러 / 대청(대청미디어)

refactoring의 시작은 클래스, 객체 그 자신에서 시작하는 것이다.
자그마한 조각부터 깔끔하게 유지가 되야 전체적인 디자인 자체도 깔끔하게 유지할 수가 있다.

아래와 같은 작은 부분부터 리팩터링을 시작해보자. 네이밍만 잘해도 반은 성공한거나 다름없다.
- rename
- extract method : composed method


지난 10년간 가장 영향력 있었던 개발(프로그래밍) 도서
http://younghoe.info/61
Posted by ologist
내가 좋아하는 글중의 하나인데, 오늘 또 한번 읽으면서 아예 링크를 가지고 왔다.
fowler아저씨의 글을 안영회님이 친절하게도 번역을 해주셔서 좀더 편안하게(?) 읽을 수가 있었다.

명령과 질의의 분리가 잘 되어서 질의를 쉽게 이용할 수 있으면 최소한의 value의 이동으로 프로그래밍을 할수 있지 않을까?

자바에서 훌륭한 프로그래머들은 final키워드를 자주 사용할까?

명령과 질의의 분리
http://younghoe.info/2

command query separation
http://martinfowler.com/bliki/CommandQuerySeparation.html
Posted by ologist

2006/07/14 07:27 Developer

Domain Model

An Object model of the domain that incorporates both behavior and data


Domain Model
http://martinfowler.com/eaaCatalog/domainModel.html
Posted by ologist
이전버튼 1 이전버튼

블로그 이미지
ologist

공지사항

Yesterday171
Today52
Total34,795

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 받은 트랙백

글 보관함