SmalltalkBestPracticePatterns:1.3

From 흡혈양파의 번역工房
Jump to: navigation, search
1.3 말하는 프로그램

말하는 프로그램

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


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


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


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

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


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

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


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


Notes