c# - 创建一个包罗万象的 AppToolbox 类——这是一种不好的做法吗?

标签 c# oop

永远不确定在哪里放置函数,例如:

String PrettyPhone( String phoneNumber ) // return formatted (999) 999-9999
String EscapeInput( String inputString ) // gets rid of SQL-escapes like ' 

我为每个应用程序创建了一个 Toolbox 类,该类用作不完全适合另一个类的函数的存储库。我读过这样的类是糟糕的编程实践,特别是糟糕的面向对象设计。然而,上述引用资料似乎更多是个别设计师和开发人员的意见,而不是总体共识。所以我的问题是,包罗万象的工具箱是一种糟糕的设计模式吗?如果是这样,为什么,还有什么替代方案?

最佳答案

好问题。我总是发现任何足够复杂的项目都需要“实用程序”类。我认为这仅仅是因为面向对象编程的本质迫使我们将事物置于结构整齐的层次分类法中,而这并不总是可行或合适的(例如,尝试为哺乳动物创建一个对象模型,然后将鸭嘴兽挤进).这是激发人们努力研究的问题 aspect oriented programming (参见 cross cutting concern)。通常进入实用程序类的是横切关注点。

使用工具箱或实用程序类的一种替代方法是使用扩展方法为原始类型提供额外的所需功能。然而,对于这是否构成良好的软件设计尚无定论。

关于这个主题,我的最后一句话是:如果您需要,请使用它,只要确保您没有走捷径即可获得更好的设计。当然,如果需要,您以后随时可以重构。

关于c# - 创建一个包罗万象的 AppToolbox 类——这是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653248/

相关文章:

C# 新手 : how to know the meaning of a variable in a lambda expression

c# - 从后面的 ascx 页面代码调用 Javascript 函数

c# - 内部类的成员可以被覆盖吗?

c# - 只能在 C# 中的程序集内继承

c# - 进入和退出 C# 检查 block 是否有成本?

c# - 最小起订量问题 - 仅在构建服务器 (TeamCity) 上

C#:部分方法和操作,未实现的主体

php - 抽象类是否有可能强制其子级在 PHP 中拥有构造函数?

oop - 递归调用一个类(实现链表)

javascript - 一遍又一遍地将相同的选项传递给 jQuery 函数