与库连接时的代码样式(C)

时间:2013-07-26 07:22:06

标签: c coding-style

最近我在编码风格方面遇到了一些有趣的问题。认识到一致性是良好代码风格的关键属性,我继承了一些具有一些有趣样式模式的代码。

有问题的代码基本上将两个库联系在一起。该计划本身并不太大。包装第一个库的实用程序函数的代码位于.h和.c文件中,总共高达100行(对于这两个文件)。与第二个库接口的代码位于.c文件中,该文件也包含main(此唯一.c文件总共300行)。使用第二个库编写的所有函数都是静态的,因为它们是特定实现的超级自定义。

我遇到的问题是每个文件都有自己的风格。有问题的程序员有自己的风格,但第一组文件遵循第一个库的风格。第二个文件使用第二个库的样式。因此,每个文件中的代码在样式方面都是本地一致的,但程序本身跨越了几种代码样式。

样式差异包括在第二个文件中使用GLib类型和函数(如g_printf())以及在第一组文件中使用C类型和函数。在第二个文件(与使用GLib的库接口的文件)中,有些部分绝对需要使用GLib而其他部分则不需要。但是,为了保持本地一致性,程序员在整个文件中使用了GLib。

因此,我想知道在这种情况下代码风格的最佳实践是什么。以下是我看到的可能选项。

  1. 使用第一组文件中第一个库的样式和第二组文件中第二个库的样式。这允许库中的代码在样式方面匹配,并允许每组文件在本地样式方面100%一致,但不能作为整体项目。

  2. 使用您自己的样式编写代码,忽略两个库的样式。 GLib呼叫将限于绝对必要的地方。标准C库将在其他地方使用。这将导致代码在本地不匹配每个文件及其关联的库调用之间的样式。但是,从文件到文件的代码应该看起来有些一致。

  3. 选择一个图书馆的风格。虽然这应该导致项目的代码保持一致,但是从这个项目到程序员的其他项目的代码将是不一致的。此外,必须遵循其他库的样式的源代码文件可能看起来有点偏。

  4. 期待听到有关此事的任何想法。我认为这是我第一次遇到一个项目的代码从同一个程序员转移到另一个样式。感谢您的意见和反馈。

2 个答案:

答案 0 :(得分:1)

我看到两个不同的问题:

  • 编码风格
  • 对glib的依赖

对于编码风格而言,整个项目应该是统一的。选择您喜欢的编码风格和规则(从第一个文件,第二个文件或您选择的一个)。但要使整个项目保持一致。当然,这需要一些努力,但将来会让你失望。

应尽可能隔离glib的依赖关系,以便将来切换此库。在C ++中,您通常会创建一个抽象类的依赖项,然后由一个具体的类继承(“程序到一个接口(即一个抽象类),而不是一个实现(即具体类)”。)因为你在C,你没有类,尝试通过解耦代码来模仿这种行为。

答案 1 :(得分:1)

  • 在我看来,使用贵公司的编码风格(如果你是为公司编码)。将来会帮助很多其他人。
  • 如果您有两种不同的风格,请保持编码风格。
  • 如果有必要,请更改库文件中的编码样式。