none
Large Class 问题 RRS feed

  • 问题

  • <重构:改善既有代码的设计> 中说到过大类的问题, 并建议,"如果你的类是一个GUI类, 你可能需要把数据和行为移到一个独立的领域对象去,你可能两边需要各保留一些重复数据,并保持两边同步".

    我感觉一个桌面程序的主窗口, 都是有很多实例变量的, 切很多事件处理函数的. 这是不是就是过大的类呢? 作者建议的把数据和行为移到一个独立的领域对象去, 不知是什么意思?

    2012年7月20日 20:11

答案

  • 看这些函数之间的代码的依赖性。有互相独立的代码/数据组合就可以分开,放到可以写自动化测试的类库里去。当然不必过度设计,类不太长,不影响阅读就可以了。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月23日 20:34
    版主

全部回复

  • Law of Demeter


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月20日 21:12
    版主
  • 你指?我明白迪米特原则是类之间的耦合要尽量的少. 但如果把GUI类的数据和事件处理函数移到另一个类中, 不知道怎么实现.

    例如, 一个Form中,假设有30个按键, 每个按键都有一个事件处理函数, 缺省这些事件处理函数都在Class Form1中. 怎么分离这些事件函数呢?

    2012年7月23日 20:25
  • 看这些函数之间的代码的依赖性。有互相独立的代码/数据组合就可以分开,放到可以写自动化测试的类库里去。当然不必过度设计,类不太长,不影响阅读就可以了。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月23日 20:34
    版主