我需要有关程序架构的良好示例和最佳实践。
我正在尝试为使用Google.Maps的应用程序建立JS用户界面。在第一版中,用户应该能够以类似于G.M的方式在地图上绘制几何形状。然后通过AJAX发送形状,显示响应。
问题是,仅仅通过多边形编辑代码就变得复杂了。
受Joel的“胶带程序员”启发,我尝试草拟一个简单直接的代码,使操作和切换事件处理程序,避免大型if-else树。 “新多边形”按钮创建一个map.onclick的观察者,更改其他按钮的事件处理程序或隐藏它们,自身也隐藏等等。
这种方法的缺点是数据处理代码与接口混合在一起。创建一个div容器以在新多边形上显示数据的代码与处理G.M或形状数据的代码相邻。如果我想要修改UI,则需要处理整个应用程序。
我可以稍后审查它并将此UI生成代码移到其他位置,但随后我的主程序员出现了。他坚持采用“消息传递”方法:一种简单的事件系统,对象订阅事件并触发它们。界面代码可以完全与数据处理和与G.M交互隔离,但现在每个侦听器都必须仔细检查是否传递的是给它的消息。
例如,在地图上单击多边形应该突出显示并开始编辑。但如果正在绘制另一个多边形,则不会这样做。因此,需要一些“你是在和我说话吗?”代码。
我将感激UI架构方法的良好示例。