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日

相关文章

  • 硬件工程师培训教程(六)

    硬件工程师培训教程(六)是一篇针对硬件工程师培训的教程,主要介绍了硬件的电路设计、PCB设计、样板制作和调试等方面的知识。 以下是该教程的完整攻略: 硬件工程师培训教程(六)- 完整攻略 1. 电路设计 电路设计是硬件工程师的核心任务之一,它涉及到电路原理图的绘制、元件的选用和电路参数计算等方面。在进行电路设计时,应该注意以下几点: 选择合适的元件:根据电路…

    C 2023年5月23日
    00
  • Win7安装程序遇到错误代码0xc8000222怎么办

    Win7安装程序遇到错误代码0xc8000222 的解决方法 在安装Windows 7的时候,有时会遇到错误代码0xc8000222,导致安装失败。该错误代码是由于Windows Update组件的某些问题引起的,不过该问题并不是很难解决。下面是一些解决方法: 方法1: 检查Windows Update服务 首先,我们需要检查Windows Update服务…

    C 2023年5月23日
    00
  • C++11/14 线程的创建与分离的实现

    下面就详细讲解C++11/14线程的创建与分离的实现的攻略。 线程的创建 使用C++11/14标准提供的std::thread库可以创建线程。线程的创建可以通过以下操作: 定义一个线程对象,并指定线程函数 c++std::thread my_thread(my_func); 这里的my_func是一个函数指针,指向线程所要执行的函数。 定义一个匿名线程对象,…

    C 2023年5月22日
    00
  • C语言实现简单猜数字游戏

    下面是详细的攻略过程: 猜数字游戏简介 猜数字游戏是一款非常经典的游戏,游戏规则简单,操作易学,玩家只需按照游戏提示猜测对应的数字即可,是入门级程序设计的绝佳选择。 下面,我们就来介绍一下使用C语言实现猜数字游戏的完整攻略: 实现步骤 1.首先,打开C语言编译器,创建一个新的工程。 2.在代码文件中,需要先引入需要用到的头文件: #include <s…

    C 2023年5月23日
    00
  • C++ 系统IO流介绍

    C++系统IO流介绍 介绍 在C++中,IO流是一组用于处理输入和输出的标准库组件。 C++标准库提供了多种IO流,包括文件流、字符串流和标准输入/输出流等。 IO流类型 输入流和输出流 在C++中,IO流分为输入流和输出流。输入流用于读取数据,输出流用于输出数据。输入和输出都是相对于程序来说的,即程序可以将数据写入输出流,另一个程序或用户可以读取该数据。 …

    C 2023年5月23日
    00
  • C++发送邮件实现代码

    下面我就为你详细讲解一下C++发送邮件实现代码的完整攻略。 1. 确定邮件发送的方式和协议 邮件的发送方式主要有两种:SMTP 和 HTTP。SMTP 协议是发送邮件的标准协议,使用 TCP 协议进行通信,而 HTTP 则是更通用的协议,适用于更多的场景,但是在邮箱的开放性上不如 SMTP 协议。 SMTP 协议通常使用端口号 25,但是一些邮箱可以配置不同…

    C 2023年5月24日
    00
  • C/C++实现树操作的实例代码

    我来详细讲解一下“C/C++实现树操作的实例代码”的完整攻略。首先,我们需要先了解什么是树,以及树的数据结构。 什么是树 树是一种非线性数据结构,由节点和边组成。树中的节点有一个称为根节点的特殊节点,其他节点可以有一个或多个父节点,以及一个或多个子节点。树最常见的例子就是文件系统中的目录结构。 树的数据结构 树的数据结构通常由节点、双亲、孩子、兄弟等数据域组…

    C 2023年5月23日
    00
  • 结构体的(.)操作符和(->)操作符区别

    一、结构体的 . 操作符二、结构体的 -> 操作符三、点操作符的优先性和结合性四、总结 一、结构体的 .操作符 1.结构体成员的直接访问:结构体变量的成员是通过操作符 . 访问的。 二、结构体的->操作符 1.结构体成员的间接访问:当我们拥有一个 指向结构体的指针 ,我们访问这个结构的成员的方式是 对指针执行间接访问操作 ,然后再通过 点操作符 …

    C语言 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部