在一行中编写多个简洁语句是一种好习惯吗?

时间:2014-02-05 15:01:15

标签: c coding-style

我很容易编写这样的代码:

if (*t) while (*++t);

它读取:如果字符串t不以/ 0开头,则移到最后。

注意while循环没有主体,所以分号终止它。

我想知道这样做是否是一种好习惯?为什么不呢?

C是当今使用最古老的流行语言之一。我相信很有可能找到一个或多个既定的风格指南。

我知道Google有一个用于他们的C ++开源项目 - http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

有人能指出我为何或为何不以某种方式编写代码的资源?

5 个答案:

答案 0 :(得分:2)

通常,编写单独的代码行是一种好习惯。就像大块代码一样,如果我们在单独的行中编写代码,调试会更加清晰。

答案 1 :(得分:1)

这取决于!谁将不得不阅读和维护此代码?存在编码标准有两个主要原因:

  1. 使代码更具可读性和可维护性。当有多个开发人员时,它会使代码更加简洁(更具可读性)。

  2. 阻止常见错误。例如,标准可能要求将文字首先置于条件中以阻止作为比较赋值的错误。

  3. 这些目标如何适用于您的特定代码?你容易犯错误吗?如果这是Linux内核代码,那么使用这样的代码比使用入门级程序员维护的Web应用程序要容易得多。

      

    它读取:如果字符串t不以/ 0开头,则移到最后。

    然后考虑对其进行评论。

答案 2 :(得分:1)

令人惊讶的是 - 随着时间的推移维护代码通常比首先编写代码更昂贵。如果代码更具可读性,维护成本将降至最低。

您的代码有三个受众群体。您应该考虑在格式化时他们的时间有多宝贵:

  1. 研究员,包括您的同事和代码审核人员。您 希望这些人对你有很高的声誉。您应该编写易于理解的代码。
  2. 您未来的自我。复杂的代码可能是显而易见的 写它,但两周后再拿起来,你不会 记住这意味着什么。您在10中写的“简明”陈述 分钟有一天会花20分钟来解读。
  3. 优化编译器,无论如何都会产生高效的代码 你的线条是否简明扼要。编译器不关心 - 尝试为其他两个节省时间。 (提示关于这个项目的愤怒评论。我赞成编写有效的代码,但是像我们在这里描述的那样简洁的样式不会影响编译器的效率。)

答案 3 :(得分:1)

不好的做法,因为不容易解析。我会做

while (*t) ++t;

让编译器进行一点点优化。

它的文本翻译比你的文本翻译更短

  

提前t,直到它指向0

答案 4 :(得分:0)

虽然你可以用C语言在一行中编写一些非常聪明的代码,但在可读性和易维护性方面通常不是很好的做法。对于您来说,理解的内容对于维护代码的人来说可能看起来很陌生。

您需要在简洁性和可读性之间取得平衡。为此,通常最好将代码分开,以便每行都做一件事。