博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache Developers'C Language Style Guide -- 最优代码风格(我认为) (转)
阅读量:2503 次
发布时间:2019-05-11

本文共 5210 字,大约阅读时间需要 17 分钟。

Apache Developers'C Language Style Guide -- 最优代码风格(我认为) (转)[@more@]

Developers' C Language Style Gu

Compiled by Paul Sutton to:paul@awe.com" rel="nofollow">paul@awe.com. Based on a vote taken in November, 1996.

Further refinements voted upon in July 1997.


Introduction

[This bit could state that code should be laid out to be clear to someone else familiar with Apache. Functions should be short and easily understood. Comments should be provided to explain the rationale for code which is not obvious, and to document behavior of functions. The guidelines can be broken if necessary to acheive a clearer layout]

This style can be generated with the following arguments to indent:

-i4 -npsl -di0 -br -nce -d0 -cli0 -npcs -nfc1

The Guidelines

  • Opening braces are given on the same lines as statements, or on the following line at the start of a function definition.
  • Code inside a block (whether surrounded by braces or not) is indented by four space characters. Tab characters are not used. Comments are indented to the same level as the surrounding code.
  • Closing braces are always on a separate line from surrounding code, and are indented to line up with the start of the text on the line containing the corresponding opening brace.
  • Functions are declared with ANSI-style arguments.
  • There is no space between the function name and the opening bracket of the arguments to the function. There is a single space following commas in argument lists and the semi-colons in for statements.
  • Inside a switch() statement, the case keys are indented to the same level as the switch line.
  • Operators in expressions should be surrounded by a single space before and after, except for unary increment (++), decrement (--), and negation (!) operators.
  • There is no whitespace between a cast and the item modified (e.g., "(int)j" and not "(int) j").
  • If a cast is to a pointer type, there is a space between the type and the * character (e.g., "(char *)i" instead of "(char*)i")

Details and Examples

  1. Indentation, General Style

    Each level of indentation of code is four spaces. Tab characters should never be used. Specific indentation rules for function declarations and control-flow keywords are given below.

    Example:

    main(int argc, char **argc) { if (argc != 0) { fprintf(stderr, "No arguments allowedn"); exit(1); } exit(0); }

     

    (or a routine declaration or invocation) would extend past column 80, the terms or arguments are wrapped at a convenient spot and the wrapped portion is indented under the first tein the expression (or the first argument to the function). Conditional expressions should be wrapped to keep single or parenthesized terms as atomic as possible, and place Boolean operators at either the start (preferable) or end of the line.

    Example:

    static const char *really_long_name(int i, int j, const char *args, void *foo, int k) if (cond1 && (item2 || item3) && (!item4) && (item5 || item6) && item7) { do_a_thing(); }

     
  2. Comments

    Provide comments which explain the function of code where it is not clear from the code itself. Provide rationale where necessary for particular bits of code.

    Comments should be indented to same level as the surrounding text.

    Example:

    code; /* comment */ code;

     
  3. Function Declaration and Layout

    Functions are laid out as follows:

    int main(int argc, char **argv) { code; }

     

    The return type is placed on the same line as the function. Arguments (if any) are given in ANSI style. If no arguments, declare function as void. No space between function name and opening bracket, single space after comma separating each argument. The opening brace is placed on the line after the definition, indented to line up with the start of the return type text. The code is indented with four spaces, and the closing brace is indented to line up with the opening brace. Also see the section on indenting .

  4. Function Calls

    Space after commas in function calls. No space between function name and opening bracket.

    f(a, b);

     

    Also see the section on indenting .

  5. Flow-Control Layout

    Flow-control statements (if, while, for, etc.) are laid out as in this example:

    if (expr) { code; } else { code; }

     

    There is a space between the keyword and the opening bracket. Opening brace placed on same line as the flow keyword. The code itself is indented by four spaces. The closing brace is indented to line up with the opening brace. If an else clause is used, the else keyword is placed on the line following the closing brace and is indented to line up with the corresponding if. Also see the section on indenting .

  6. for Layout

    Space after the semi-colons. Example:

    for (a; b; c)

     
  7. switch Layout

    case lines within a switch() are indented to same level as the switch statement itself. The code for each case is indented by four spaces. Braces are laid out as for other control-flow keywords. Example:

    switch (x) { case a: code; case b: code; }

     
  8. Expressions

    Space before and after assignment and other and operators. No space between unary operators (increment, decrement, and negation) and the lvalue. Examples:

    a = b a + b a < b a = -b a = !b ++a

     
  9. Ctalisation of Enums

    No rule.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-1007540/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-1007540/

你可能感兴趣的文章
流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
查看>>
Android源码解析01:下载Android源码
查看>>
NodeJS05
查看>>
Windows10更新后,远程桌面无法登录服务器 提示远程桌面协议 CredSSP 出现漏洞
查看>>
开发一个移动应用之前应该思考的5件事
查看>>
[转] iOS 常用数学函数
查看>>
shiro过滤器解释类
查看>>
使用kubeadm安装K8s-1.14.2
查看>>
2.字符串及其操作
查看>>
操作字符串
查看>>
python 单例模式
查看>>
LoadRunner 技巧之协议分析
查看>>
android studio 快捷键
查看>>
vs2010 打开 vs2012 的解决方案
查看>>
iis常见问题解决
查看>>
mysql入门
查看>>
NR LTE UMTS GSM CDMA TDS频点频率换算工具
查看>>
servlet基础
查看>>
机房测试8.23
查看>>
thinkphp 迁移数据库 -Phinx 简单说明文档
查看>>