스몰 토크를 사용하여 아무 것도 전달하지는 못했지만 짧은 시간을 보냈을 때 확실히 그 자리를 떠났습니다. 경험을 설명하는 유일한 방법은 MVC가 원래 의도했던 방식입니다. 기본적으로 응용 프로그램의 모든 작업은 비즈니스 개체 (또는 기울어 진 경우 도메인 모델)에서 수행됩니다. 표준 제어는 어떤 방식으로 비즈니스 오브젝트에 바인드됩니다. 예를 들어, 텍스트 상자는 객체의 필드에 매핑됩니다 (필드 자체는 객체이므로 쉽게 수행 할 수 있음). 버튼은 메소드에 매핑됩니다. 이것은 모두 매우 간단하고 자연스러운 API로 수행됩니다. 우리는 객체 바인딩 등에 대해 생각할 필요가 없습니다. 그냥 작동합니다.
그러나 많은 새로운 언어와 API에서는 외부에서 생각해야합니다. 먼저 C ++ 및 MFC, 이제 C # 및 WPF를 통해 Microsoft는 개발자가 이벤트 핸들러를 구현하여 응용 프로그램을 빌드하는 GUI 빌더에 매료되었습니다. . Java Swing 개발은 그다지 다르지 않습니다. 폼의 컨트롤을 직접 인스턴스화하는 코드 만 작성하면됩니다. 일부 프로젝트의 경우 이벤트 핸들러 만있는 도메인 모델이 없을 수도 있습니다. 나는 대부분의 내 간병인을 위해이 모델에 있었고 주변에있었습니다.
각 방법은 당신이 다르게 생각하도록 강요합니다. 스몰 토크 접근 방식을 사용하면 GUI가 멍청한 반면 도메인은 영리합니다. 기본 VisualStudio 접근 방식을 사용하면 GUI가 영리하지만 도메인 모델 (있는 경우)은 빈약합니다.
내가 함께 일하는 많은 개발자들은 스몰 토크 접근 방식에서 가치를보고 그 접근 방식을 VisualStudio 환경으로 끌어 올리려고 노력합니다. WPF는 가지고 어떤 것이 가능하게 기능을 동적 바인딩하는 단계; 그러나 한계가 있습니다. 필연적으로 도메인 모델에 속하는 일부 코드는 GUI 클래스로 끝납니다.
그렇다면 어떤 방법으로 코드를 디자인 / 개발합니까? 왜?
- GUI 먼저. 사용자 상호 작용이 가장 중요합니다.
- 도메인 우선. UI를 설치하기 전에 시스템이 올바른지 확인해야합니다.
두 가지 접근 방식에 대한 장단점이 있습니다. 도메인에는 크리스탈 대성당과 하늘의 파이가 들어 있습니다. GUI는 빠르고 더티 (때로는 더러워 짐)에 적합합니다.
그리고 추가 보너스 : 코드를 유지 보수 할 수 있는지 어떻게 확인합니까?