C语言如何提高程序的可读性?

一、问题

        可读性是评价程序质量的一个重要标准,直接影响到程序的修改和后期维护,那么如何提高程序的可读性呢?

二、解答

提高程序可读性可以从以下几方面来进行。

        (1)C程序整体由函数构成的。

        程序中,main()就是其中的主函数。在程序中是可以定义其他函数的,在这些定义函数中进行特殊的操作,使函数完成特定的功能。将所有的执行代码全部放入 main()函数,虽然程序也是可行的,但是如果将其分成一块一块的,每-块使用一个函数进行表示,那么整个程序看起来就具有结构性,并且易于观察和修改。

        (2)函数体的内容在 “ { } ” 中。

        每一个函数都要执行特定的功能,那么怎么能看出一个函数的具体操作的范围呢?答案就是找寻“ { ”和“ } ”这两个花括号。C 语言使用一对花括号来表示程序的结构层次,需要注意的就是左右花括号要对应使用。函数的具体操作范围如图所示。

说明:在编写程序时,为了防止对应花括号的遗落,每一次都先将两个对应的花括号写出来,
然后再向括号中添加代码。

(3)英文字符大小通用。

        在程序中,可以使用英文的大写字母,也可以使用英文的小写字母。一般情况下使用小写字母多一些,因为小写字母易于观察。但是,在定义常量时常常使用大写字母,在定义函数时有时也会将第一个字母大写。

(4)空格、空行的使用。

        空行的作用就是为了增加程序的可读性。使用适量的空格和空行,可以使程序代码位置安排更合理、美观。但是变量名、函数名和C语言保留字中间不能加入空格。除此之外的空格和空行可以任意根据程序可读性和美观的需要进行设置,C语言编译系统是不会理会这些空格和空行的。

例如,下面代码的书写就非常不利于观察。

int max(int a, int b)      /*定义取两数最大者函数*/
{int c;                /*定义存放最大数的变量*/c = a > b ? a : b;    /*将两数中较大的赋给c*/return c;             /*返回最大的数 c*/
}

        但是,如果将其中的执行语句在函数中进行一下缩进,使函数体内代码开头与函数头的代码不在一列,这样就会有层次感,例如下面的代码。

int max(int a, int b)   /*定义取两数最大者函数*/
{int c;              /*定义存放最大数的变量 */c = a > b ? a : b;  /*将两数中较大的赋给 c*/return c;           /*返回最大的数 c*/
}

三、总结

        不要认为代码实现了功能就是成功的程序代码。一个高质量的程序代码要求具有良好的编写风格,但是也不能一味注重风格,而忽略了代码实现的这个最主要的目的。

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

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

相关文章

【C++学习笔记】C++多值返回写法

C不像python可以轻易地处理多值返回问题,处理使用指针或者引用将需要返回的值通过参数带出来,还有几种特殊的方式。 引用自:https://mp.weixin.qq.com/s/VEvUxpcJPsxT9kL7-zLTxg 1. Tuple tie 通过使用std::tie,我们可以将tuple…

Mysql事务隔离级别是怎么实现的?

Mysql事务 事务概念事务特性事务并发事务隔离级别MVCC多版本并发控制 事务概念 小钢同学今天发工资了,赶紧打开招商银行app看看工资到账了没有,查看余额300 嗯,今天心情好,给对象转账50大元买lv包包去,最后的结果肯定…

Vmware虚拟机问题解决方案 运行虚拟机系统蓝屏 运行虚拟机时报错VT-x

1. 运行虚拟机系统蓝屏 可能的原因有两个: 1). 虚拟机所在磁盘的空间不足 ; -------> 清理磁盘空间 。 2). 操作系统版本高, 需要适配新版本的Vmware ; ------> 卸载Vmware15版本, 安装Vmware16版本 。 2. 卸载Vmware步骤 1). 卸载已经安装的VMware 弹出确认框, 点击…

四旋翼无人机入门基础知识

电池 聚合物锂电池单体电芯的额定电压都为3.7V 电池的保存电压:单个电芯3.8V 电池的满电电压:单个电芯4.2V 串联:容量不变,电压相加,并联:电压不变,容量相加 S:串联,P&…

基于博弈树的开源五子棋AI教程[7 多线程搜索]

文章目录 引子定义实现结果尾记 引子 多线程加快搜索速度这一认知是经受住实践考验的。博弈树搜索的并行搜索方式有很多种,例如叶子并行,根并行,树分裂等算法。笔者给出一种实现起来比较简单的根并行算法。 在是实现时需要注意两点&#xff…

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

该实现由两个组件组成:在 LabVIEW FPGA 中实现的 SPI 协议以及用于从主机 PC 或实时控制器与 FPGA 进行通信的 LabVIEW 主机接口。该架构允许从单个主机程序控制多个 SPI 端口,同时仍然允许定制 FPGA VI 以进行其他数据采集和处理。该实现不使用任何DMA&…

【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】

前言 大家好吖,欢迎来到 YY 滴C考前速过系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《…

2_单列模式_懒汉式单例模式

二.懒汉式单例模式 (1) 饿汉式单例模式概念 为了解决饿汉式单例可能带来的内存浪费问题,于是就出现了懒汉式单例的写法。懒汉式单例模式的特点是,单例对象要在被使用时才会初始化。 (2) 代码实现 实现代码方式1:简单的饿汉式单例 /*** 优…

解密威胁:.kat6.l6st6r 勒索病毒的威胁与恢复

导言: 在当今数字化时代,勒索病毒已经成为网络安全威胁中的一大巨头。其中,.kat6.l6st6r 勒索病毒以其狡猾的传播方式和高级的加密算法备受关注。本文将深入介绍.kat6.l6st6r 勒索病毒的特点、应对措施以及如何预防此类威胁。如果您在面对被…

基于java的 aws s3文件上传

aws s3 文件上传代码 首先,确保您已经在AWS上创建了一个S3存储桶,并拥有相应的访问密钥和密钥ID。这些凭据将用于在Java代码中进行身份验证。 接下来,需要在Java项目中添加AWS SDK的依赖。可以使用Maven或Gradle进行依赖管理。以下是一个Ma…

Kubernetes实战(十七)-设置kubernetes允许master调度pod

1 taint节点调度策略 NoSchedule: 一定不能被调度PreferNoSchedule: 尽量不要调度NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod 2 查看节点调度 $ kubectl describe node|grep -E "Name:|Taints:" Name: ops-master-1 Taints: no…

Kotlin 委托

Kotlin 委托 委托模式 是一种 通过 对象组合 实现代码重用 的设计模式, 对象处理请求时 将其 委托给 其他对象(委托)处理。 Kotlin 委托 分为: 类的委托属性的委托 一、类的委托 委托 Delegate 是实现继承的一种替代方式。达到了…

流量预测中文文献阅读(郭郭专用)

目录 基于流量预测的超密集网络资源分配策略研究_2023_高雪亮_内蒙古大学(1)内容总结(2)流量预测部分1、数据集2、结果对其中的一个网格的CDR进行预测RMSE和R2近邻数据和周期数据对RMSE的影响 (3)基于流量预…

ElasticSearch概述+SpringBoot 集成 ES

ES概述 开源的、高扩展的、分布式全文检索引擎【站内搜索】 解决问题 1.搜索词是一个整体时,不能拆分(mysql整体连续) 2.效率会低,不会用到索引(mysql索引失效) 解决方式 进行数据的存储(只存储…

无缝打通易快报与电子签章系统,合同管理也能如此简单!

客户介绍: 某股份有限公司是一家专注于高端装备制造和智能制造解决方案的高新技术企业。该公司的产品和服务广泛应用于汽车、航空、高铁、智能家居、电子电器、新能源等领域,为全球客户提供了高效、精准、可靠的制造解决方案。 添加图片注释&#xff0c…

剑指offer面试题4 替换空格

考察点 考察数据结构字符串知识点 不同于c语言,java语言有字符和字符串俩种数据类型,char类型(字符类型)是基本数据类型,string类型(字符串类型)是引用类型 java语言中的字符采用unicode编码在内存中用2个字节存储,因此一个英文…

js中console.log()的使用方法

console.log()是JavaScript中的一个内置函数,用于在控制台输出信息;该方法对于开发过程进行测试很有帮助。可以输出之前在其中定义的任何类型的变量,或者只输出需要显示给用户的任何消息。 语法是: console。log(&am…

HCIA-Datacom题库(自己整理分类的)_12_其他网络协议多选【12道题】

1.下面哪些是路由协议? BGP IPX OSPF IP 2.网络管理员使用Ping来测试网络的连通性,在这个过程中下面哪个协议可能会被使用到? UDP ICMP ARP TCP 解析:UDP、TCP是四层协议。 3.以下哪些是指网络通信? 使用即时通信软件(如:QQ、微信)与好友…

​iOS 应用上架指南:资料填写及提交审核

目录 摘要 引言 打开appuploader工具,第二步:打开appuploader工具 第五步:交付应用程序,在iTunes Connect中查看应用程序 总结 摘要 本文提供了iOS新站上架资料填写及提交审核的详细指南,包括创建应用、资料填写-…

【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析

目录 日期和时间 1.1 Date类 1.1.1 概述 1.1.2 常用方法 1.1.3 案例 1.2 DateFormat类 1.2.1 概述 1.2.2 常用方法 1.3 SimpleDateFormat类 1.3.1 概述 1.3.2 构造方法 1.3.3 模式字符 1.3.4 日期转字符串 1.3.5 字符串转日期 1.4 Calendar类 1.4.1 概述 1…