首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDialog和CPropertySheet验证的最佳实践?

CDialog和CPropertySheet验证的最佳实践?
EN

Stack Overflow用户
提问于 2009-06-22 13:39:00
回答 1查看 963关注 0票数 3

你能告诉我你的方法或者给我一个在MFC应用程序中最佳对话框和属性表验证的最佳实践的参考吗?

我有我自己的方法,但我对任何其他的意见感兴趣。

我听说MFC DDX_xxx和DDV_xxx宏(以及UpdateData()函数)不是最好的解决方案吗?

那么属性表验证呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-28 23:24:15

我喜欢使用模型-视图-演示者的变体。关于这种做法的一个很好的MFC风格的例证是Michael Feathers的"The Humble Dialog Box“。

一些原则:

  • 尽可能地忽略视图(在您的情况下是对话框或属性表)。它不应该包含实际的业务/验证逻辑。相反,它应该便于向用户显示数据和用户对数据的操作。它应该通知演示者正在发生的事情,但它不应该在任何意义上“指导”操作。
  • 模型负责数据的形状。在我的模型中,每个属性都存储在一个LimitedXXX结构中。例如,LimitedStringCString m_valueint m_maxLenint m_minLenAllowedChars m_allowedCharsAllowedChars是一个标志枚举,表示是否允许整数数字、小数/组字符、字母、标点符号等字符。模型只包含字段,不包含任何逻辑。演示者
  • 负责将模型值传输到视图和从视图传出,并响应来自视图的通知。当视图引发编辑控件的更改通知时,演示者通过根据模型公开的限制进行验证来做出响应。然后,演示者可以根据值是否有效采取各种操作。它可能会显示一个消息框并恢复原始值,可能会将错误消息推入视图的通知区域,可能会使错误图标在视图中可见。
  • 组件应该通过接口而不是具体的类引用来引用彼此。这允许在没有UI的情况下对模型和presenter进行单元测试。而UI本身又薄又傻,大部分风险都可以通过测试其他两个组件来解决。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1027262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档