代码之家  ›  专栏  ›  技术社区  ›  Julian Popov

CDialog和CPropertySheet验证最佳实践?

  •  3
  • Julian Popov  · 技术社区  · 17 年前

    1 回复  |  直到 17 年前
        1
  •  3
  •   Aidan Ryan    17 年前

    我喜欢使用模型视图演示器的变体。这种做法的一个很好的MFC风格示例是“ The Humble Dialog Box

    一些原则:

    • 模型负责数据的形状。在我的模型中,每个属性都存储在LimitedXXX结构中。例如a LimitedString CString m_value int m_maxLen int m_minLen AllowedChars m_allowedChars . AllowedChars 是一个标志枚举,表示是否允许使用整数、数字、十进制/组字符、字母、标点符号等字符。该模型只有字段,不包含任何逻辑。

    • 演示者负责在视图之间传输模型值,并响应视图中的通知。当视图为编辑控件发出更改通知时,演示者会通过验证模型所暴露的限制来做出响应。然后,演示者可以根据值是否有效采取各种操作。它可能会显示一个消息框并还原原始值,可能会将错误消息推送到视图的通知区域,可能会在视图中显示错误图标。

    • 组件应该通过接口而不是具体的类引用来相互引用。这允许在没有UI的情况下对模型和演示者进行单元测试。而且UI本身又薄又笨,大部分风险都是通过测试其他两个组件来解决的。