5

在我的 C 项目中,我有一个相当大的 utils.c 文件。它确实充满了许多不同类型的实用程序。只是在里面塞入不同的杂项功能,我觉得有点调皮。例如,它有一些与低级相关的实用程序,例如小写()函数,它还有一些非常复杂的实用程序,例如转换为/从不同的颜色格式转换。

我的问题是,有这么大的 utils.c 里面有许多不同类型的实用程序是不是很顽皮?我应该把它分解成许多不同类型的实用程序文件吗?比如graphics_utils.c等等你怎么看?

4

9 回答 9

9

根据类别(即图形、字符串等)将它们分解为单独的文件将导致更好的组织,更容易找到某些代码片段,通过更小的文件,而不是只有一个大文件。

于 2009-08-18T03:27:45.110 回答
7

您想要分解它,不仅仅是出于组织原因,还因为您将有许多其他文件依赖于这个文件。因为一切都依赖于这个文件,这使得这个文件很难更改,因为它可能会导致广泛的破坏。

http://ifacethoughts.net/2006/04/15/stable-dependencies-principle/

于 2009-08-18T03:50:23.010 回答
6

当合适时,我倾向于将它们分解为各种子工具(graphics_utils)。

于 2009-08-18T03:25:27.987 回答
6

如果只有您自己会维护这些东西,那么复杂性何时达到您发现自己在寻找东西的地步是一个问题。那将是重构和重组的时候(重组是有成本的,就像不重组是有成本一样)。

如果其他人可能会维护一个包含您的实用程序的项目,那么您在决定何时重组时必须考虑他们的痛点。他们的比你的低很多。

于 2009-08-18T03:37:16.467 回答
3

分开来。东西会更容易找到、更容易重用、更容易重构、更容易进行单元测试。我最近需要从一个庞大的 Java 实用程序类的静态方法中获取一组 ISO-8601 日期处理方法,而且很难找到我需要的 5% 的代码。

于 2009-08-18T03:30:26.620 回答
2

这绝对不是 kosher,因为下一个通过您的代码的人将不知道在哪里寻找任何东西。按功能分解,你的同事会感谢你的!

于 2009-08-18T03:29:01.660 回答
2

将文件拆分为单独文件的另一个好处是,当您将其置于源代码控制之下时,您可以进行更细粒度的控制。如果您有经常调整/扩展/专门化的位,以及其他相对稳定的位,这真的很有用。

于 2010-03-24T16:07:14.317 回答
2

另一点:你应该组织你的代码,即将它分解成更小的模块并对其进行分类,因为在某个时间点你最终会为同一件事编写第二个和第三个函数,仅仅是因为你不会发现你知道它在那里,但你不记得它的名字的功能。

我有一个带有这样一个模块的(相当大的)项目,并且有多达 5-6 个实现的编程逻辑(对于同一件事)。

于 2010-03-24T16:30:18.790 回答
0

像其他人一样,我会把他们拆散。但是我现在倾向于使用扩展方法,所以我会为每个类扩展一个类(和一个文件)(例如StringExtensionsSqlDataReaderExtensions等)。我发现这往往会很好地分解实用程序方法。

于 2009-08-18T03:36:10.153 回答