C语言 函数——代码风格

目录

基本的代码规范

程序版式

对齐(Alignment)与缩进(indent)

变量的对齐规则

空行——分隔程序段落的作用

代码行内的空格——增强单行清晰度

代码行

长行拆分

标识符命名规则

标识符命名的共性规则

windows应用程序命名规则

灵活运用的命名规则

简化的windows应用程序命名规则

注释规范

不好的注释

好的注释

在哪些地方写注释?


基本的代码规范

Basic rules and guidelines of Coding Style

*程序版式

*程序注释

*命名规则

追求

*清晰、整洁、美观、一目了然

*容易阅读,容易测试程序版式

程序版式

对齐(Alignment)与缩进(indent)

——保证代码整洁、层次清晰的主要手段

*位于同一层{和}之内的代码在{右边数格处左对齐

*同层次的代码在同层次的缩进层上

  *现在的许多开发环境、编辑软件都支持“自动缩进”

  *VC中有自动整理格式功能(ALT+F8)

*一般用设置为4个空格的Tab键缩进,不用空格缩进

变量的对齐规则

*数据类型+n个TAB+变量名+[n个TAB]+=+[初始化值];

*例

        char name[20];

        char addr[30];

        char sex="F";

        int age=20;

        float score=90;

空行——分隔程序段落的作用

*在每个函数定义结束之后加空行

*在一个函数体内,相邻两组逻辑上密切相关的语句块之间加空行,语句块内不加空行

代码行内的空格——增强单行清晰度

*关键字之后加空格,但函数名之后不加空格

*赋值、算术、关系、逻辑等二元运算符前后各加一空格

*但一元运算符以及[ ]    .    -   >前后不加空格

        sum = sum + term;

*(向后紧跟,) , ; 向前紧跟,紧跟处不留空格,,;后留一个空格

        Function(x, y, z)

        for (initialization; condition; update)

*对表达式较长的for和if语句,为了紧凑可在适当地方去掉一些空格

        for (i=0; i<10; i++)

        if ((a+b>c) && (b+c>a) && (c+a>b))

代码行

一行只写一条语句,便于测试

一行只写一个变量,便于写注释

        int width;        //宽度

        int height;        //高度

        int depth;        //深度

        int width,height,depth;        //宽度高度深度(不建议)

尽可能在定义变量的同时,初始化该变量

        int sum = 0;

if、for、while、do等语句各占一行,便于测试和维护

        if (width < height)

        {

                DoSomething();//执行语句无论有几条都用{和}将其包含在内

        }

长行拆分

代码行不宜过长,应控制在10个单词或70~80个字符以内

        Studies show that up to ten-word text widths are optimal for eye tracking

实在太长时要在适当位置拆分,拆分出的新行要进行适当缩进

        if ((veryLongVarl >= veryLongVar2)

                &&(veryLongVar3 >= veryLongVar4))

        {

                DoSomething();

        }

        double FunctionName(double variablename1,

                                             double variablename2);

        for (very_longer_initialization;

              very_longer_condition;

              very_longer_update)

        {

                DoSomething();

        }

标识符命名规则

按照执行级别分为:

*共性规则——必须执行

*简化规则——建议采用

*可选规则——灵活运用

标识符命名的共性规则

有意义,直观可拼读,见名知意,不必解码

最好采用英文单词或其组合,切忌用汉语拼音,尽量避免出现数字编号

不要出现仅靠大小写区分的相似的标识符

不要出现名字完全相同的局部变量和全局变量

用正确的反义词命名具有互斥意义的变量或相反动作的函数

*int minValue;

*int maxValue;

*int GetValue(...);

*int SetValue(...);

尽量与所采用的操作系统或开发工具的风格保存一致

*在Linux/Unix平台

        习惯用“小写加下划线”

        function_name

        variable_Name

*Windows风格

        大小写混排的单词组合而成

        FunctionName

        variableName

windows应用程序命名规则

Microsoft公司的Hungarian Notation

主要思想

        在变量和函数名前加上前缀,用于表示变量的数据类型

        【限定范围的前缀】+【数据类型前缀】+【有意义的英文单词】

        限定范围的前缀

                静态变量前加前缀s_ , 表示static

                全局变量前加前缀g_,表示global

                默认情况为局部变量

        数据类型前缀

        ch 字符变量前缀

        i    整形变量前缀

        f    实型变量前缀

        p    指针变量前缀

灵活运用的命名规则

限定范围的前缀与数据类型前缀可要可不要

无特殊意义的循环变量可以直接定义成i,j,k等单词变量

        int i, j, k;

        float x, y, z;

     *若采用匈牙利命名规则,则应写成

        int iI,iJ,iK;     //前缀i表示int类型

        float fx,fy,fz; //前缀f表示float类型

简化的windows应用程序命名规则

变量名形式

*小写字母开头,“名词”或者“形容词+名词”

        oldValue,newValue

函数名形式

*大写字母开头,“动词”或者“动词+名词”(动宾词组)

        GetValue(),SetValue()

宏和const常量全用大写字母,并用下划线分隔单词

        #define ARRAY_LEN 10

        const int MAX_LEN=100;

注释规范

写注释给谁看?

*给自己看,使字节的设计思路得以连贯

*给继任者看,使其能接替自己的工作

写注释的最重要的共性在于传承

*要站在继任者的角度写

*简单明了、准确易懂、防止二义性

*让继任者可以轻松阅读、复用、修改自己的代码

*让继任者轻松辨别出哪些使字节写的,哪些是被人写的

不好的注释

好的注释

在哪些地方写注释?

在重要的文件首部

        文件名+功能说明+【作者】+【版本】+【版权声明】+【日期】

在用户自定义函数前,对函数接口进行说明

        函数功能+入口参数+出口参数+返回值(包括出错处理)

在一些重要的语句上方

        对代码的功能、原理进行解释说明

在一些重要的语句行右方

        定义一些非通用的变量,函数调用,较长的、多重嵌套的语句块结束处

*在修改的代码行旁边加注释

*在调试程序中对暂不使用的语句通常可先用注释符括起来,使编译器跳过这些语句

可灵活运用的一些规则

*注释可长可短,但应画龙点睛,重点加载语义转折处

*简单的函数可以用一句话简单说明

        //两数交换

        void Swap(int *x, int *y)

*内部使用的函数可以简单注释,供被人使用的函数必须严格注释,特别是入口参数和出口参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL入门到实战-第十八弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(二)官网地址PostgreSQL概述PostgreSQL中表别名命令理论PostgreSQL中表别名命令实战更新计划 PostgreSQL中表连接操作(二) 了解PostgreSQL表别名及其实际应用程序。 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容…

19c数据库/dev/shm/过小导致pga内存不够

pga_aggregate_limit已经设置了120G&#xff0c;alert还是报内存不够 查询select * from v$pgastat&#xff0c;发现MGA占了80G内存 查看/dev/shm: 发现设置了7G&#xff0c;操作系统是512G&#xff0c;正常情况下/dev/shm应该是操作系统的一半&#xff0c;修改为250G后数据库…

微信小程序 django+nodejs电影院票务售票选座系统324kd

小程序Android端运行软件 微信开发者工具/hbuiderx uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 前端&#xff1a;HTML5,CSS3 VUE 后端&#xff1a;java(springbootssm)/python(flaskdja…

vue3:菜单、标签页和面包屑联动效果

文章目录 1.整体思路2.实现过程 概要 提示&#xff1a;这里可以添加技术概要 例如&#xff1a; openAI 的 GPT 大模型的发展历程。 1.整体思路 在之前做的后台项目中&#xff0c;菜单、标签页和面包屑之间的联动&#xff0c;自己都是通过在路由前置守卫中&#xff0c;定义b…

微服务面试题二

1.什么是雪崩 微服务之间相互调用&#xff0c;因为调用链中的一个服务故障&#xff0c;引起整个链路都无法访问的情况。 如何解决雪崩&#xff1f; 超时处理&#xff1a;请求超时就返回错误信息&#xff0c;不会无休止等待仓壁模式&#xff1a;限定每个业务能使用的线程数&a…

WPS的JS宏如何批量实现文字的超链接

表格中需要对文字进行超链接&#xff0c;每个链接指引到不同的地址。例如&#xff1a; 实现如下表格中&#xff0c;文件名称超级链接到对应的文件路径上&#xff0c;点击对应的文件名称&#xff0c;即可打开对应的文件。 序号文件名称文件路径1变更申请与处理表.xls文档\系统…

第十三届蓝桥杯省赛大学B组编程题(c++)

D.刷题统计 二分(AC): 注意:二分时右边界 right 的确定 #include<iostream> using namespace std; long long a,b,n; bool check(long long x){long long tx/7;x%7;long long temp0;if(x<5) tempx*a;else temp5*a(x-5)*b;long long cntt*(5*a2*b)temp;return cnt&g…

MySOL之旅--------MySQL数据库基础( 2 )

本篇碎碎念:尽自己最大的努力,直到筋疲力尽为止,加油 今日份励志文案: 别人都在前进,我为什么要停下 目录 补上一条博客缺失的内容 常用数据类型 数值类型&#xff1a; 字符串类型&#xff1a; 日期/时间类型&#xff1a; 二进制类型&#xff1a; 其他类型&#xff1a; …

抖音小店入驻有什么条件?资金少,没经验的普通人做得起吗?

大家好&#xff0c;我是电商花花。 在直播电商的推动下&#xff0c;抖音小店独特的电商模式下吸引着众多的商家&#xff0c;吸引着一波又一波的创业者入驻&#xff0c;想要在抖音小店上开垦出属于自己的电商净土。 想要入驻抖音小店还需要一些条件&#xff0c;然后才能入驻成…

Python机器学习学习线路

随着人工智能技术的飞速发展&#xff0c;机器学习已经成为计算机科学领域的热门话题。Python&#xff0c;作为一门功能强大且易于上手的编程语言&#xff0c;成为学习机器学习的理想选择。本文将为您介绍一条Python机器学习的学习线路&#xff0c;帮助您逐步掌握机器学习的基础…

ARM/X86+FPGA轨道交通/工程车辆行业的解决方案

深圳推出首条无人驾驶地铁—深圳地铁20号线&#xff0c;可以说是深圳地铁的一次开创性的突破。智能交通不断突破的背后&#xff0c;需要很严格的硬件软件等控制系 统&#xff1b;地铁无人驾驶意味着信号系统、通信系统、综合监控系统、站台屏蔽门工程等项目必须严格执行验收。…

ping命令返回无法访问目标主机和请求超时浅析

在日常经常用ping命令测试网络是否通信正常&#xff0c;使用ping命令时也经常会遇到这两种情况&#xff0c;那么表示网络出现了问题。 1、请求超时的原因 可以看到“请求超时”没有收到任何回复。要知道&#xff0c;IP数据报是有生存时间的&#xff0c;当其生存时间为零时就会…

goproxy一键安装脚本(稳定易用的proxy软件)

goproxy 官网 https://goproxy.cn/ go语言开发的简单易用高性能proxy 软件 #!/bin/bash # time: 2021-05-11 17:47:39 # by: Chen ##执行脚本需要传入网络设备名 ##例&#xff1a;sh goproxy-install.sh eth0# 0.安装必须要的依赖 yum install wget -y || apt install wget -y…

vue简单使用二(循环)

目录 属性绑定 if判断&#xff1a; for循环&#xff1a; 属性绑定 代码的形式来说明 三元表达式的写法&#xff1a; if判断&#xff1a; for循环&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

ActiveMQ + MQTT 集群搭建(虚机版本) + Springboot使用配置

文章目录 前言一、ActiveMQ、 MQTT是什么&#xff1f;1.ActiveMQ介绍2.MQTT介绍 二、集群搭建步骤1.下载apache-activemq-5.15.12-bin.tar.gz2.上传apache-activemq-5.15.12-bin.tar.gz到服务器并解压文件到文件夹clusters、master、slave三个文件夹下面形成三个节点&#xff0…

Win10下安装Anaconda

Anaconda是可以便捷获取包且对包能够进行管理&#xff0c;同时对环境可以统一管理的发行版本&#xff0c;它包含了conda、Python在内的超过180个科学包及其依赖项。 安装Anaconda Anaconda官方下载网址&#xff1a;https://www.anaconda.com/download 官网页面中&#xff0c…

Docker日志查看神器

探索Dozzle&#xff1a;简单实用的Docker日志查看工具 在容器化应用程序的开发和部署中&#xff0c;日志管理是至关重要的一环。为了便于查看和监控Docker容器的日志信息&#xff0c;开发人员和运维团队需要便捷的工具。Dozzle 就是这样一款简单实用的Docker日志查看工具&…

2024 Mathorcup高校数学建模挑战赛(A题)| PCI冲突问题 | 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;以整数规划&#xff0c;多元回归等强大工具&#xff0c;构建了解决复杂问题的独特方案。深度学习, 混沌模型的妙用&#xff0c;为降低非法野生动物贸易提供新视角。通过综合分析&#xff0c;描绘出概率、…

基于springboot实现知识管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现知识管理系统演示 摘要 随着信息互联网信息的飞速发展&#xff0c;无纸化作业变成了一种趋势&#xff0c;针对这个问题开发一个专门适应师生作业交流形式的网站。本文介绍了知识管理系统的开发全过程。通过分析企业对于知识管理系统的需求&#xff0c;创建了…

日出6万单!美区“开塞露”卖疯了,保健赛道正式起飞!

质疑养生&#xff0c;理解养生&#xff0c;加入养生&#xff01; 从保温杯里泡枸杞&#xff0c;到桌上摆满保健品&#xff0c;"养生"已经从一种模糊的概念转变为了生活中的刚需。在加班、熬夜、脱发这些"亚健康"标签的围绕下&#xff0c;年轻人开始重视自…