encoding specification编码规范

本文总结了Linux内核的编码风格建议,包括行数限制、函数命名、布局规则、头文件管理、注释指导等,强调代码自表达和清晰度,提供了一个C语言编程的实用参考。
摘要由CSDN通过智能技术生成

encoding specification编码规范

本文就C语言通用规则进行总结归纳,参考链接也会标注清晰,如若侵权,必删!

“这是一个简短的文档,描述了 Linux 内核的首选编码风格。 编码风格非常个人化,我不会对任何人强加我的见解,但这是我必须要维护的代码(指 Linux 内核代码)的编码风格,对于其他项目代码,我也希望使用它。 写内核代码时请至少考虑本文提出的风格。

首先,我建议打印出 GNU 编码标准,然后不要阅读。 烧掉它们,这是一个很棒的象征性动作。” ——《Linux内核编码风格》

以数规范

  1. 源文件行数1000行最佳,最多不超过2000行
  2. 语句长度不超过80个字符,语句间隔最多不超过2行
  3. 函数名原则上不超过30个字符,超过30个字符的函数占该文件全部函数比例不超过10%
  4. 函数实现长度不超过25行,局部变量5-10个
  5. 函数参数个数最好不超过5个
  6. 全局变量不应长于21个字符;局部变量不应长于10个字符

布局格式

  1. 文件中不能有超过两行的空行(当然你可以自己安排,统一就行),不同模块间空一行。
  2. 条件编译宏涉及嵌套或者大跨度的时候,结束宏需要注释信息
  3. 头文件包含,<x.h>在前,“x.h”在后
  4. 顺序定义常数宏,定义函数宏,typedef、struct和enums
  5. 静态数据声明和定义
  6. 函数,应按它们的逻辑关系而非调用顺序来组织

头文件

  1. 最好不包含头文件,做到自包含(即单独编译就可以通过)
  2. 减少头文件包含头文件,避免头文件循环依赖
  3. 头文件向稳定方向包含,即最好包含不太会变化了的头文件
  4. 文件内部使用的宏、场景以及静态函数和变量都不能定义到头文件中
/* sys/types.h */ 
#ifndef _SYS_TYPES_H_  //注意宏定义中包含分路径名(主目录下面不需要)
#define _SYS_TYPES_H_

.../* body of types.h */

#endif /* _SYS_TYPES_H_ */

源文件

#include <stdio.h> 
#include "xxxx.h"

#define HELLO_CNT 3

int main(void)
{
    int i;

    for (i = 0 ; i < HELLO_CNT; i++)
    {
        printf(“hello world.\n”);
    }

    return 0;
}

语句

  1. 避免多层嵌套,嵌套层数不超过2层(卫语句)
  2. 优先判断异常情况,趁早退出

注释

  1. 代码最好自表达,但是必要注释也不可少,但也不宜多,需要清晰明了
  2. 不用//,用/**/;调试注释可以使用#if 0 方便且可以防止嵌套
  3. 外部API最好注释表明目的和使用方法,方便他人使用
  4. 条件编译和条件判断跨度大并且嵌套的,分支时需要注释

函数注释

/*
 *@ Description:向接收方发送SET请求
 * @param req - 指向整个SNMP SET 请求报文.
 * @param ind - 需要处理的subrequest 索引.
 * @return 成功:SNMP_ERROR_SUCCESS,失败:SNMP_ERROR_COMITFAIL
 */

源文件注释

/*
 *  Syncookies implementation for the Linux kernel
 *
 *  Copyright (C) 1997 Andi Kleen
 *  Based on ideas by D.J.Bernstein and Eric Schenk. 
 *
 *	This program is free software; you can redistribute it and/or
 *      modify it under the terms of the GNU General Public License
 *      as published by the Free Software Foundation; either version
 *      2 of the License, or (at your option) any later version.
 * 
 *  $Id: syncookies.c,v 1.18 2002/02/01 22:01:04 davem Exp $
 *
 *  Missing: IPv6 support. 
 */

REF

编程风格
《Linux 内核编码风格》官方手册最新中译本

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值