【发布时间】:2011-01-12 10:39:44
【问题描述】:
每当我为某事编写解决方案时,我倾向于要么使用大量静态类,要么根本不使用。例如,在最近的一个项目中,我必须通过一些箍发送一个带有一些字符串/布尔/日期时间数据的类,唯一不是静态的就是这个数据保存类。其他所有内容(3 个具有不同处理职责的相当大的类)都是静态的。
我认为我在这里要求的是一些关于何时(以及为什么)我应该避免对这些“进程 X,输出 Y”情况使用静态类的输入。只要它们正常工作就可以一直使用它们,还是我在可扩展性、插件支持等方面自责?
我希望这是一个可以在这里问的问题。我不是在要求关于静态类是否“更好”的论点 - 只是输入我应该何时避免使用它们。
【问题讨论】:
-
我首先想到的是为什么不能让“数据持有类”负责对其数据进行任何必要的操作?这将避免需要一堆额外的静态类,并减少不必要的耦合。
-
这已在此处广泛介绍,请尝试以下链接:Uses for static generic classes? & Extension Methods vs Static Utility Class
-
VS 2008 中的代码分析工具将始终建议方法/类如果没有或不使用任何实例数据,则应该是静态的。这是好的做法吗?
-
在数据持有类中添加静态数据操作方法?一般来说,这可能是一个好主意——但是,其中一些数据处理是例如将类转换为它的 HTML 表示形式,这感觉有点过于具体,无法放入同一个类中。但也许我只是以错误的方式看待它。编辑:感谢您的回答,一切都很好。
-
确实,HTML 编写器不应该属于数据持有类。因为它不操纵数据,所以它不应该存在。