我正在寻找一些高质量的C代码。 有人能指点我一些文章,网站......无论如何 我需要一些例子。 我已经看过并阅读过K& R C书。
但时代已经改变,有些人必须对质量C代码有更多的说法。 另一个重要的事情是你如何确保你作为程序员有书面质量的C代码?
答案 0 :(得分:11)
有人提到了一些编译器开关,但具有语法平滑的代码并不能确保高质量的最终产品,因为软件质量要高于此。
有几种软件质量分类,但这里有一个列表,您可以将其用作清单:
答案 1 :(得分:10)
在编译器中启用警告。使用gcc,我使用这些标志:
-std=c99 -pedantic -Wall -Wextra -Werror -Wmissing-prototypes
-Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings
-Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wconversion
-Wstrict-prototypes
如果您的代码无法更改为不产生警告,请删除-Werror
或不使用产生警告的特定标志。
答案 2 :(得分:7)
传统上,人们使用lint来帮助解决这个问题。
答案 3 :(得分:4)
答案 4 :(得分:4)
使用传统上称为lint的静态分析工具,但是我使用了splint这很好。请参阅此question中的建议。我个人建议启用警告并修复它们。
就规则而言
编辑: 特定于C,这个C gotchas列表是必不可少的读物,即使它适用于C ++,也值得通过CERT C++ Secure Coding Standard
答案 5 :(得分:2)
之前的讨论what-are-some-good-resources-for-learning-c-beyond-kr可能指向更多(书籍)示例。
答案 6 :(得分:1)
很难看出你自己是否正在编写高质量的代码,确定那里有大量的自动化和标准,但是如何应用他们在那里看到的所有内容?
这是我作为判断代码质量的方法的同行评审的忠实粉丝。让其他人看到(也学习)你的代码,这将是质量的判断。
答案 7 :(得分:1)
到目前为止,人们已经提到了工具。但是,超过某一点,您真正只能做一件事来真正提高您编写的代码的质量:
编写代码。
答案 8 :(得分:1)
部分取决于“质量C”代码的含义。
该计划的一个重要方面是“它做了它的设计目的”吗?这很难衡量,但至关重要。
然后您需要知道代码是否为编译器所接受 - 使用set of GCC compiler options提供的Cristoph表示代码处于良好状态。 (虽然我会对-Wno-long-long
进行狡辩,但这取决于您的代码可能需要移动到的位置。)
代码布局很重要。代码是否可以被人类和编译器读取?布局是否统一?它是否采用标准格式之一 - 有几种,主要有以下几种,只要你始终使用其中一种,代码应该没问题。是否适当评论?这意味着足够的评论,但不是太多!该文件应该有一个标题注释,表明其中包含的内容 - 可能是谁写的,也许是分发它的许可证。关于此问题,有很多问题,包括Professional #include comments。但是,在很短的时间之后,将代码写入良好的布局标准是常规的。
文档可能是相关的 - 通常是相关的。其他人如何知道代码存在,它做什么,如何使用它,何时使用它,什么时候不使用它?
代码应该用足够好的算法编写 - 它不应该使用过多的内存,磁盘或CPU时间。它也应该不泄漏资源。除了你可以证明它是一个性能瓶颈之外,在每个程序运行时使用一次的程序,在启动时几毫秒,也没有必要将性能增强的最后一个CPU周期拧干。程序整体。
答案 9 :(得分:1)
编写单元测试!
与更现代的语言相比,用C语言编写单元测试可能有点麻烦,但它仍然非常值得。
我认为正确的单元测试是确保任何代码质量的第一种方法。您可以使用所需的所有静态分析工具和代码审查,但没有什么比实际运行代码和验证结果更好。
答案 10 :(得分:0)
一些强制执行代码质量的现代软件生命周期实践:
后者可能特别适用于C语言。