SmalltalkBestPracticePatterns:1.3

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
1.3 말하는 프로그램

말하는 프로그램

프로그램이 당신에게 말을 한다는 걸 알고 있는가? "Buy more Jolt Cola" 와 같은 메시지를 의미하는 게 아니라, 시스템을 어떻게 구성해야 하는지에 대한 중요한 정보를 말하는 것이다.


프로그래밍을 잘 하고 있다가 불현 듯 프로그램이 말을 안 듣기 시작하고 모든 것이 까다로워진다면 프로그램이 당신에게 말을 하고 있는 것이다. 뭔가 중요한 내용이 빠졌다는걸 말이다.


프로그램이 말을 할 때 다수의 패턴들은 당신에게 무엇을 해야 할지 알려준다. 때로는 새로운 메소드를, 때로는 새로운 객체를, 또 때로는 새로운 객체의 생성을 필요로 할 것이다. 필요한 응답이 무엇이든 반응을 하기 전에 우선 듣는 것을 잊지 말라.


프로그래머로서 우리는 한 번쯤은 생활을 더 복잡하게 만들도록 설계된 것으로 보이는 시스템과 (예: 워드 프로세서) 끔찍한 경험을 가진 적이 있을 것이다. 고통과 좌절에 익숙해져 무뎌지거나 그 경험을 일의 일부로 취급하는 건 어렵지 않다. 그렇다고 자신의 프로그램이 꼭 그래야 할 이유는 없다. 깔끔하고 간단하면서 읽기 쉬운 프로그램을 만들면 되니까.

"이 부분은 여기 넣어야 할 것 같은데요."
"안 돼요. 그렇게 작동하는 게 아니잖아."
"잠시만요. 이렇게 하면 좀 더 읽기 쉽고 유연하지 않을까요?"
"그렇지만 그건 객체가 하는 일이 아니잖아요."
"우선 해 보고 결정하죠."
...중얼 중얼 중얼...
"어! 더 괜찮네요."


필자가 위의 시나리오를 얼마나 많이 경험했는지는 손에 셀 수도 없다. 좋은 소식은 필자가 우리 고객보다 더 똑똑하다거나 고객이 향상시키지 못하는 코드를 필자가 향상시킬 수 있는 건 아니라는 점이다. 단지 필자는 어디에 집중해야 하는지를 알고 (어떤 패턴을 찾아야 하는지) 코드가 이끄는 것을 단순히 따라갈 자신이 있다.

어떻게 제거할 것인지 알아내는 것만으로도 몇 가지가 크게 개선된다:
  • 중복 코드 (아무리 작은 것이라도)
  • 조건부 로직
  • 복합 메소드
  • 구조적 코드 (한 객체가 다른 객체를 데이터 구조로 취급)


이러한 패턴들은 찾아야 할 문제와 그에 대한 해결방법으로 구성된 도구상자를 제공한다. 시간이 지나면서 생겨나는 문제들이 처음에 비해 작다는 사실을 발견할 것이다. 처음부터 코드를 올바르게 작성하는 기술이 필자보다 더 발전하길 바란다. 필자는 아직도 궁지에 몰리는 상황이 자주 발생한다.


Notes