功能只使用一次的控件应该放在UserControl中吗?

4
请原谅我如果这是系统的轻微误用,但我希望StackOverflow用户可以解决我和同事之间的辩论。
通常情况下,即使我知道它只会被使用一次,我也更喜欢将每个独立的功能项封装在一个UserControl中。
在这种情况下,我的同事会避免创建UserControl并使用WebForm,他会争辩说,如果它只会被使用一次,那么创建UserControl有什么意义 - 它只会增加额外的不必要的开销。
我认为额外的开销是微不足道的,它可以使代码更好地组织起来,并且谁知道,将来可能会重新使用该功能。
那么谁是对的呢?
编辑
看起来我可能会收到很多回复 - 我的同事和我已经同意,在一天内统计回复数并将正确答案授予获得最多投票的一方。
进一步编辑
看起来我是赢家:D
我忽略了建议我们双方都是正确的文章,并将支持每一方的答案计为+1,以及每个答案的点赞也算为+1。我以11-6获胜。
7个回答

7
如果这能让代码更有组织性,我会尝试创建独立的用户控件。
这确实可以使通信更加清晰易懂。想想SRP(单一职责原则)。

4

为什么不将其保留在WebForm中,并在需要重用该功能时重构为UserControl?记住:YAGNI。

当然,代码变得更加组织化,但在项目中拥有的类/文件数量方面也需要取得平衡 - 如果过度使用,可能会很难找到东西。


请查看http://stackoverflow.com/questions/437/what-is-your-solution-to-the-fizzbuzz-problem/1902#1902,了解企业级Fizzbuzz的有意过度工程解决方案! - Davy8

3

我不会将它封装在一个UserControl中,所以很抱歉但我和你的同事持有相同的观点。UserControls是专门用于可重用内容的(毕竟它是一个控件,对吧?)。保持简单,不要过度设计,不要给自己创造更多的工作量,因为“你可能会在将来某个时候重新使用这个功能”。也许你不会。当你真正需要它时再将其变成一个控件。


所以,您是那些从不使用表格进行设计的纯粹主义者之一,因为“它们是用于表格数据的”? - User
是的,我是。 :) 我使用DIV进行布局。 - Pawel Krakowiak

2
我也喜欢把所有东西放在用户控件中。首先,这样更有组织性,而且你不能确定你不想把那个UI元素放在网站的其他位置。
简单回答:你是对的,你的同事是错的。

1

考虑这样一种情况,在页面上有数十个这样的代码片段:这些代码全部放在一个表单中还是应该每个表单都作为自己的控件?

并不是说你会百分之百地正确,但这可能是打破你同事对此看法的一种方式。


1

即使您只使用代码一次 - 将代码放入用户控件中会为您提供片段缓存选项。如果您的应用程序对性能至关重要,那么我会支持使用用户控件。当您进行性能测试时,您很可能无法返回并将代码重构为用户控件以获得片段缓存的好处。


0
我认为额外的开销可以忽略不计。
同意 - 试图通过不使用UserControls来微调性能应该被谴责。
它可以,如果在您特定的上下文中确实如此 - 那么,是的,这是一个好主意。
而且谁知道,将来可能会重复使用功能。
是的,你可能会。或者你可能不会。这是一种平衡,最好通过Y(P)AGNI(您(可能)不需要它)来反驳。
因此 - 总结一下,这取决于它是否真的使代码更好组织。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接