C语言代码规范

一、问题引入

初入编程世界,我们不知道什么叫做好代码。一切以实现功能和快速上线项目为主,但编程经验增加,发现代码越来越难写,越来越难改。
导致这样的原因是没有遵循一般性的编程规则或则没有良好的编程风格。俗话说:“无规矩不成方圆”,在编程水平上来后,就更应该遵循规则。

傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员

好代码的检验标准就是人们是否能轻而易举地修改它

二、解决过程

规则涉及到:变量、函数、结构体、宏、注释、缩进、空格、花括号

2-1 变量

好代码应能清楚地表明它在做什么,而变量命名是代码清晰的关键

变量按照作用域可以分为:局部变量、全局变量、静态局部变量

变量按照类型可以为:普通变量、结构体变量

  • 变量采用小驼峰(或匈牙利)命名法 例如:englishBook

  • 结构体变量加后缀_t 例如:event_t

  • 全局变量加前缀g_ 例如:g_mode

  • 静态局部变量加前缀s_ 例如:s_mode

? 变量命名法有多种,但总体风格只能体现一种,不能代码中同时出现命名方法。

2-2 函数

好的命名十分重要,但往往并非唾手可得。只有恰如其分地命名,才能彰显出将大函数分解成小函数的价值

  • 若函数无特殊用途,一律限制为static 例如: static int lib_user_id_get()

  • 函数命名采用匈牙利命名法 例如:int lib_user_id_get()

  • 函数参数类型为指针时,若禁止通过间接引用修改值,应限制为const 例如:static int lib_user_pwd_set(const char *pwd)

  • 函数参数类型为结构体时,一律传入结构体指针,若禁止通过间接引用修改值,一律限制为const

  • 函数主体部分不能过长,会影响阅读。主体部分应控制在一个显示器页面内

  • 一个函数只做一件事,正如函数名定义的那样

  • 当函数参数大于三个以上的参数时,考虑把三个参数作为一个结构体

2-3 结构体

  • 结构体名称应该是名词或名词短语,不应该是动词 例如:CustomerAccount

  • 结构体声明时,采用大驼峰命名法,加后缀_T 例如:EventData_T

  • 结构体变量定义时,采用小驼峰命名法,加后缀_t 例如:eventData_t

2-4 宏

  • 宏定义使用全大写字母,连接符用_ 例如:#define FILE_SIZE 1024

2-5 注释

  • 当你感觉需要撰写注释时,请先尝试重构,试着让所有注释都变得多余

  • 当逻辑比较复杂难以理解,应该加以注释说明

  • 良好的代码是不需要注释的,应该代码可读性良好

  • 注释不是越多越好,仅在关键地方标注注释就好

三、反思总结

良好的代码风格可以增加可读性,提高可维护性。

四、参考引用

知名半导体MCU大厂软件开发C代码规范

重构:改善既有代码的设计(第二版)

代码整洁之道

原文链接:https://www.cnblogs.com/caojun97/p/17171309.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言代码规范 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 全面解析C++中的new,operator new与placement new

    全面解析C++中的new、operator new与placement new 在C++中,我们通常使用new来动态分配内存和构造对象。然而,在实际的工程开发中,一个新的问题就会被曝光:new虽然提供了一个比较便利的方法来分配内存和构造对象,但是也很容易引发一些内存方面的问题。例如: new会抛出异常并终止程序,如果内存不足 new会调用构造函数来进行初始化…

    C 2023年5月22日
    00
  • 恐怖黎明0xc000007b怎么办_恐怖黎明0xc000007b错误的解决方法

    恐怖黎明0xc000007b错误的解决方法 什么是0xc000007b错误 0xc000007b错误是Windows操作系统中常见的错误之一,它通常会出现在启动应用程序时。这个错误通常是由于缺少或损坏了应用程序所需的某项文件或库,导致程序无法正常启动。 恐怖黎明0xc000007b错误的解决方法 以下是一些可能有效的恐怖黎明0xc000007b错误解决方法:…

    C 2023年5月23日
    00
  • C语言实现客房管理系统

    C语言实现客房管理系统的完整攻略包含以下几个步骤: 设计数据结构和功能模块 首先需要设计客房管理系统的数据结构和功能模块。根据系统需要,可以设计出以下数据结构: Room:客房信息,包括客房号、类型、价格、当前状态(已入住或未入住)等。 Order:订单信息,包括客房号、入住时间、退房时间、客人姓名等。 根据这些数据结构,可以设计出以下功能模块: Check…

    C 2023年5月23日
    00
  • Lua教程(二十一):编写C函数的技巧

    Lua教程(二十一):编写C函数的技巧 在Lua的扩展开发中,编写C函数是非常必要的。本篇文章将介绍一些编写C函数时需要掌握的技巧。 捕获Lua栈 当我们需要在C中调用Lua函数并获得Lua栈中的值时,我们需要使用Lua_API中提供的函数来实现这一目标。我们可以通过以下示例实现: int my_function(lua_State* L) { int ar…

    C 2023年5月24日
    00
  • C++中的vector容器对象学习笔记

    C++中的vector容器对象学习笔记 什么是vector容器对象? vector容器对象在C++中被定义为动态数组。它可以容纳许多类类型对象(int、double、bool、char等)。和其他数组不同的是,vector容器对象在创建后,可以根据需要动态地调整大小。这意味着可以动态添加或删除元素。 如何定义并初始化vector容器对象? 定义vector需…

    C 2023年5月23日
    00
  • 浅谈Gin框架中bind的使用

    下面是关于在Gin框架中使用bind的攻略。 什么是bind 在Gin框架中,你可以使用bind来绑定请求的内容到指定的结构体上。如果请求传过来的参数符合结构体中定义的字段类型和名称,那么bind操作就可以将这些参数值绑定到对应的结构体字段上,从而方便我们在后续的处理中使用。bind可以用于解析请求的body、header、query等多种方式获取的参数。 …

    C 2023年5月23日
    00
  • ASP.NET MVC异常过滤器用法

    当ASP.NET MVC应用程序中出现未处理的异常时,我们可以使用异常过滤器(Exception Filter)来在异常发生时捕获异常并做出相应的处理。 以下是如何使用异常过滤器的完整攻略: 1. 创建异常过滤器 首先,我们需要创建一个异常过滤器,它是一个实现了IExceptionFilter接口的类。在该类中,我们实现了OnException方法,并在其中…

    C 2023年5月22日
    00
  • C 环境设置

    C 环境设置完整使用攻略 什么是 C 环境 C 环境包括编译器、链接器和调试器等,是用来开发 C 语言程序的软件集合。 C 环境设置步骤 1. 下载安装 C 语言编译器 常见的 C 语言编译器有 GCC 和 Clang 等,可根据自己的需求选择合适的编译器并下载安装。以 GCC 编译器为例,下载安装步骤如下: 在官网(https://gcc.gnu.org/…

    C 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部