在我的C项目中,我有一个很大的utils.c文件。它真的充满了各种各样的实用工具。我觉得有点顽皮,只是在那里填充不同的杂项功能。例如,它有一些与低级别东西相关的实用程序,例如lowercase()函数,它还有一些非常复杂的实用程序,例如转换为不同的颜色格式。
我的问题是,拥有如此庞大的utils.c以及许多不同类型的实用程序是否非常顽皮?我应该将它分解成许多不同类型的实用程序文件吗?比如graphics_utils.c等等你觉得怎么样?
答案 0 :(得分:9)
基于类别(即图形,字符串等)将它们分解为单独的文件将导致更好的组织,使得更容易找到某些代码片段,使较小的文件通过,而不是只有一个大文件
答案 1 :(得分:7)
您希望将其分解,不仅仅是出于组织原因,还因为您将拥有许多依赖于此文件的其他文件。因为一切都取决于这个文件,所以这个文件很难改变,因为它可能导致广泛的破坏。
http://ifacethoughts.net/2006/04/15/stable-dependencies-principle/
答案 2 :(得分:6)
我倾向于将它们分解为各种子工具,就像你说的那样(graphics_utils)。
答案 3 :(得分:6)
如果仅仅是你将会维护这些东西,那么问题就在于复杂性何时达到你发现自己在寻找东西的程度。那将是重构和重组的时间(重组的成本,就像没有重组的成本一样)。
如果有可能其他任何人都会维护一个包含你的工具的项目,你在决定何时重新组织时必须考虑他们的痛点。他们的价格比你低很多。
答案 4 :(得分:3)
分手。东西将更容易找到,更容易重用,更容易重构,更容易进行单元测试。我最近需要从一个巨大的Java实用程序类静态方法中获取一组ISO-8601日期处理方法,而且很难找到我需要的5%的代码。
答案 5 :(得分:2)
绝对不是犹太人,因为通过你的代码的下一个人不会知道在哪里寻找任何东西。按功能分解,你的同事会感谢你!
答案 6 :(得分:2)
将文件分解为分隔符所带来的另一个好处是,当您将其置于源代码管理之下时,您可以获得更精细的控制。如果您经常调整/扩展/专用的位以及相对稳定的其他位,这非常有用。
答案 7 :(得分:2)
另一点:你应该整理你的代码,我。即在较小的模块中将其分解并对其进行分类,因为在某个时间点,您最终会为同一个事情编写第二个和第三个函数,只是因为您不会找到您知道它在那里的函数,但是您不记得它的名字。
我有一个(相当大)的项目有这样一个模块,并且有编程逻辑,最多有5-6个实现(对于同样的事情)。
答案 8 :(得分:0)
和其他人一样,我会把它们分开。但我现在倾向于使用扩展方法,所以每个类都要扩展一个类(和一个文件)(例如StringExtensions
,SqlDataReaderExtensions
等)。我发现这很容易打破实用方法。