在过去十年中,您对C编程实践的看法有何变化?

时间:2009-07-16 07:14:07

标签: c coding-style

面向对象的程序员似乎充满乐趣。他们不仅每两年处理一次主要的框架修订,而且每五​​年都会使用新的和改进的语言,他们还可以处理为其编程风格量身定制的设计实践。从测试驱动开发到设计模式,面向对象的程序员有很多东西需要跟上。

相比之下,C编程世界似乎更加稳重。该语言的最后一次重大修订是在1999年,而下一次修订可能远没那么令人印象深刻。 K& R第二版仍被许多人认为是一篇很好的介绍性文本,尽管现在已有二十年了。

如果作为C程序员,我们已经开发并改进了我们的技能和实践(我认为我们可能已经拥有),我们似乎并不善于沟通它们。 我们不销售有关它们的书籍,在博客上发布它们,或围绕它们组织研讨会。不像其他软件开发世界那样。

所以,让我们分享。

您首选的“现代”C编程实践是什么?

你是否使用长期涉及的预处理器宏的'template'libraries以与C ++程序员相同的方式从硬件中挤出最后一英寸的性能?您是否使用halloc之类的分配库来最大限度地减少管理内存所花费的时间,还是使用全面的自动garbage collector

当然,如果你自1987年以来一直在使用这些东西,也可以随意加入;这个问题的关键是要分享不同寻常但可能使其他人受益的做法。

您最喜欢的'现代'C软件设计实践是什么?

当然,设计考虑因素至少同样重要。您是否适应面向对象世界的设计实践?你使用UML吗?或者您选择以语言中立的方式(流程图,Z,最弱的前置微积分,任何东西)来规范规范?

4 个答案:

答案 0 :(得分:7)

我尝试尽可能使用现成的库来实现基本功能。我发现glibGTK+ GUI framework的一部分)在涉及一般数据结构等时非常出色。不再编写自己的hash tablelinked listdynamic array或其他任何内容。

我还认为GTK +工具包中面向对象的想法很棒,并且经常构造我的代码。没有什么可以阻止你在C中采用范式,它足够灵活,可以表达许多在其他语言中被制作成“一流”的东西,即使这样做通常也会涉及某种......冗长,当然。

答案 1 :(得分:5)

不是一个C编程实践,因为我是那些在C ++中工作的新奇的面向对象程序员之一,但是这个:

面向对象编程不是灵丹妙药

我希望我的公司有更多纯粹的C程序员来教育大三学生有超越面向对象的生活。

答案 2 :(得分:5)

老实说,我的回答是,在与它斗争很长一段时间后,我终于屈服于C ++。我真的很享受它的优势。

我希望能够让编译器处理OO管道,能够使用异常和RAII而不是乱扔乱码返回代码和资源释放,而不是重新实现链接列表或自动扩展的向量或更智能的字符串库是无数次的,运算符重载而不是vector_add()到处都是等等。当然,在C中有很多这样的库,但似乎这些事情在竞争解决方案之间相当分散。用C ++标准化这些便利设施很不错。

好的一点是,如果我觉得最适合这个项目的话,我仍然可以自由地放下并完成我在C中所做的所有事情。没有像Java那样的OO直夹克。

答案 3 :(得分:2)

1999:使用C,它是快速,低级,高效的

2009:使用Python,它足够快,高效,多平台,流行和有趣