半不重要背景: 我正在一个页面上有两组可折叠的面板。 (使用nHibernate)我得到的类别对象中有一个项目列表,并为每个类别生成左侧面板和右侧面板。在两个面板中都有一个ListBox。项目预先填充到左侧列表框中,用户可以选择项目并将其移动到右侧列表框中(在相应的类别下)。紧密集成的私人助手类
由于我已经构建并处理了它,因此我得到了很多的通用方法,如buildPanel(边,的categoryID),然后结束了大量的重复,如果在他们里面的语句双方
if type=PanelType.Left then
set these 5 id strings to access components
else
...
的代码有杂乱的区分,让我感动了很多的逻辑和为了使主类的其他部分更易于阅读和遵循,将组件ID的静态构建器字符串转换为私有助手类。我看到的问题是私有类非常依赖父类中的特定结构。有很少量的封装正在进行,即使代码中的单个组件更易于阅读,我也可能会使逻辑更难以遵循。
我的问题是:当你使用这样的私有类时,是否可以将它与父类紧密集成(因为它是私有的并且在同一个文件中实现),我最好再次重构并且找到一种简化我的原代码的方法,尽可能缩短没有辅助类的时间(将所有类别/面板功能粘在一个地方,并在我不使用它们时将它们隐藏在自己的地区),或者我应该走向将更多的逻辑放在助手类中,并简单地将我的事件直接映射到子类。
打字出这一切之后,我倾向于最后一个选项,但我仍然蹂躏/困惑的整个事情...
我喜欢这本书的比喻。现在,它不符合这个标准,我可能会将其余的实施移到助手类中。当你试图向别人解释你的问题时,你可以更好地理解你的问题。 – Kendrick 2010-06-30 20:26:25
请注意,我不一定表示当你不能“像读一本书一样阅读它或向同事解释”时,你应该将它移动到一个辅助类。重构也意味着您只需重新访问代码并重命名或移动某些方法,合并或扩展它们,检查每个方法的一个函数,创建某些本地字段的属性,或仅添加区域和注释。目标应该是清晰的,并且将事物移出情境(助手类)并不总是意味着它变得更清晰。 – Abel 2010-07-01 06:58:57