我开始使用c#开发,听说它说所有标准控件都应该在自定义类中“包装”,即使此时我没有添加任何额外的功能。引用这个案例的例子是有人开发了一个系统的应用程序,在部署前一天晚上客户要求文本框以某种方式运行,类似于旧的大型机系统,开发人员能够实现这个功能在15分钟内通过修改他们的控制子类,或类,或其他任何东西。
我应该以这种方式为标准控件创建自定义包装吗?
答案 0 :(得分:3)
我个人不这样做,如果您刚刚开始使用C#开发,我认为我不会推荐它。
我确实将控件包装在更高的级别,并使用模型视图Presenter模式来分离数据和视觉效果,从而允许更改控件而无需重写逻辑。
答案 1 :(得分:2)
老实说,我看不出它应该值得打扰。如果出现类似于你描述的那种情况,那么tag mapping仍然可以实现同样的目的,这基本上可以让你编写自己的包装器,并说“当我说TextBox时,我的代码中到处都是,我的意思是MyCustomTextBox“
答案 2 :(得分:2)
虽然您所谈论的开发人员被誉为他们令人惊叹的工作的下一个救世主,但他们表现出糟糕的项目管理技能,既允许客户做出如此接近发布的变更,又实际实施它并在第二天早上将产品推出。它可能已经工作了,但是下次他们尝试时,当客户端系统上出现意外错误时,你可能会遇到大规模的噩梦。
在任何情况下,以这种方式扩展控件,以防万一您将来某个时候需要它,这不是一个好习惯。只写你需要写的东西以满足规范 - 额外的东西会在你有时间燃烧时出现。
答案 3 :(得分:1)
这听起来很像未来的证据,作为习惯,我试图避免对可能发生的事情作出决定。像这样包装控件会使代码更复杂,更难以维护。尽管如此,我不知道你所处的特殊情况,你所描述的可能是常见现象。
可能有更好的方法,可能通过使用界面和不同的设计模式,但你真的必须使用你感到舒服和理解的东西。在混乱的项目中以及允许在任何时间点做出他们想要的任何决定的客户尤其如此。如果这是您认为处理这种情况的最佳方式,并且您认为您的描述很可能在项目中发生,那么这可能不是一个坏主意。这可能不是我的选择,但这并不意味着这是错误的决定。
答案 4 :(得分:1)
heard it said that all standard controls should be 'wrapped' in a custom class
首先,无论谁对你这么说都应该阅读我的维基问题:Ways to prevent over-engineering。它被要求专门帮助像他们这样的人....
在回答你的问题时,我的建议只会在必要时提出。如果您提供了一个场景,那么我可能会更具体,但是,作为一般性共识,它是明确的否。