您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

提高代码可读性的 10 个技巧

时间:2019-11-04 09:55:38  来源:  作者:
作者:开源中国
来源:https://www.oschina.net/translate/

具有较强可读性的代码,能帮助你调试程序,不让自己活得太累。

代码可读性是计算机编程领域中普遍存在的问题。这也是我们成为开发者首先要学习的事情之一。本文会详细介绍在编写强可读性代码时最佳实践中最重要的一部分内容。

注释和文档

 

IDE(Integrated Development Environmnet,集成开发环境)在过去数年中已经存在了很长时间。使用 IDE 注释代码比以往容易得多。某些确切的注释标准可以让 IDE 和其它工具以不同的方式来完成注释。

看个示例:

提高代码可读性的 10 个技巧

 

 

我在这里添加到函数定义前的注释可以在使用函数的时候显示出来,甚至在其它文件中使用这个函数也没问题。

下面是另一个示例,关于调用一个第三方库的函数:

提高代码可读性的 10 个技巧

 

 

提高代码可读性的 10 个技巧

 

 

在这些示例中,注释(或文档)的类型是基于 phpDoc 的,使用的 IDE 是 Aptana。

保持一致的缩进

 

假设你已经知道代码需要缩进。不过值得注意的是,最好保持缩进样式一致。

缩进代码的方式很多,这里最最常见的两种:

风格 1:

提高代码可读性的 10 个技巧

 

 

风格 2:

提高代码可读性的 10 个技巧

 

 

我以前使用的风格 #2,但最近改为 #1 了。但这个问题只是一个偏好的问题。没有“最好”的风格来让每一个人都去遵循。实际上,最好的风格就是一致的风格。如果你是团队的一员,或者你在向某个项目贡献代码,你就应该遵循项目中正在使用的风格。

缩进风格间并不总是会有明显的区别。有时候,不同的规则会产生混淆。比如,在 PEAR 编码标准中,前大括号“{”与控制结构在同一行,但在函数定义中却需要换行。

PEAR 风格:

提高代码可读性的 10 个技巧

 

 

另外,请注意,缩进是用的 4 个空格而不是制表符。

这里是 Wikipedia 中不同缩进风格的示例。

避免显而易见的注释

 

注释代码非常棒;但是,如果注释只是简单的重复就显得多余了。看看这个示例:

提高代码可读性的 10 个技巧

 

 

如果文本是显而易见的,真的没必要在注释里再写一次。

如果你一定要在代码里写点注释,可以把它们合并在一行:

提高代码可读性的 10 个技巧

 

 

代码分组

 

某些任务往往不是几句代码就能解决的,那最好把这些任务代码分为不同的代码段,在它们之间添加一些空行。

下面是一个简单的示例:

提高代码可读性的 10 个技巧

 

 

在每段代码前添加注释可以加强视觉分离效果。

保持一致的命名规范

 

PHP 本身有时候并不遵循一致的命名规范:

  • strpos() vs. str_split()
  • imagetypes() vs. image_type_to_extension()

首先,名字应该有单词的边界。下面是两种流行的选择:

  • 驼峰风格(camelCase):除第一个单词外每个单词的第一个字母都大写。
  • 下划线(underscores): 在单词间使用下划线分隔,比如:MySQL_real_escape_string()。

这一点与我前面提到使用不同缩进风格的情况相似。如果项目中已经在使用某个约定,你应该遵循它。另外,某些语言平台往往会有一个特定的命名规范。比如在 JAVA 中,多数代码使用驼峰命名风格,而多数 PHP 程序员使用下划线命名风格。

这些网络也可以混合使得。有些开发者喜欢对过程函数和类使用下划线风格,但对类方法使用驼峰风格:

提高代码可读性的 10 个技巧

 

 

再强调一下,没有“最好”的风格,保持一致就好。

DRY 原则

 

DRY 代表不要重复你劳动(Don't Repeat Yourself)。也被称为 DIE:复制是不可接受的(Duplication is Evil)。

该原则规定:

“每个知识必须在一个系统内具有一个唯一的、明确的、权威的表示。”

大多数应用程序(或通用的计算机)的目标是使重复的任务变得自动化。这个原则应该在所有的代码中保留,包括 Web 应用程序中。同一段代码不应该一再地被重复。

例如,大多数 Web 应用程序由许多页面组成。这些页面很可能包含通用的元素。标题和页脚通常是最佳证明。将这些页眉和页脚在每个页面中复制一份并不是一个好主意。Jeffrey Way 在此解释了如何在 CodeIgniter 中创建模板。

提高代码可读性的 10 个技巧

 

 

避免深嵌套

 

过多的嵌套层次会使代码变得难以阅读和跟踪

提高代码可读性的 10 个技巧

 

 

为了提高可读性,通常会通过修改代码来减少嵌套的层级:

提高代码可读性的 10 个技巧

 

 

限制行长度

 

人眼在阅读窄长的列式文本时感觉更舒适,这也是为什么报纸的文章都是这个样子:

提高代码可读性的 10 个技巧

 

 

避免代码行水平过长是一种良好的变成习惯

提高代码可读性的 10 个技巧

 

 

当然,如果有人,比如 Vim 用户,想要在终端窗口中阅读你的代码,最好将代码行的长度限制在 80 个字符左右。

文件和文件夹的组织

 

从技术上讲,你可以在单个文件中编写整个应用程序的代码。但是,这对阅读和维护来说将是一个噩梦。

在我的第一个编程项目中,我懂得了创建“包含文件”的作法。不过,我还没有接触过远程组织。我创建了一个“inc”文件夹,其中包含两个文件:db.php 和 functions.php。随着应用的扩展,functions 文件也变得庞大和不可维护。

最好的方法之一就是使用框架或者模拟其文件夹结构。下面是 CodeIgniter 的代码布局:

提高代码可读性的 10 个技巧

 

 

一致的临时变量命名

 

通常,变量应该是描述性的,并且包含一个或多个单词。但是,这并不一定适用于临时变量。它们可以短到单个字符的长度。

对于具有相同作用的临时变量,使用一致的命名是一个很好的做法。以下是我在代码中常用的几个示例:

提高代码可读性的 10 个技巧

 

 

探索 TDM 对于敏捷、DevOps 和持续交付中速度和质量的必要性。与 CA 技术一起携手合作。



Tags:代码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关推荐
一、Aliyun Java Initializr阿里中间件发布的定制版Spring Initializr。是集文档、erminal、编辑器三个窗口为一体的。 二、Cloud Toolkit简单来说就是可以快速部署远程服务...【详细内容】
2021-07-15  Tags: 代码  点击:(4)  评论:(0)  加入收藏
介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发...【详细内容】
2021-07-13  Tags: 代码  点击:(13)  评论:(0)  加入收藏
大家好,我是鱼皮。最近私信收到最多的问题就是:我学编程的时候记不住代码,老忘怎么办?比如这位小伙伴,学编程一个月了,问我咋背代码: 头像不错其实,我自己的记性是非常非常差的,所以...【详细内容】
2021-07-13  Tags: 代码  点击:(1)  评论:(0)  加入收藏
我们常常会听到这样一句话:“为了让研发只关心业务开发,我们做了某某某!”做了啥呢,做了让你不用关心,系统搭建、技术框架、核心组件、通用模块以及上线应用时也只是点点点就可以...【详细内容】
2021-07-04  Tags: 代码  点击:(9)  评论:(0)  加入收藏
今天小编有个客户跟我说启动电脑,出现这种情况 出现这种问题,跟电脑硬盘有关系!电脑设置问题或者病毒造成的硬盘引导分区错误。那么我们应该怎么解决呢?首先先看下我们电脑的...【详细内容】
2021-06-28  Tags: 代码  点击:(8)  评论:(0)  加入收藏
前言lamda表达式只支持函数式接口。 Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优...【详细内容】
2021-06-11  Tags: 代码  点击:(42)  评论:(0)  加入收藏
不知道各位在项目开发过程中有没有过这种体会,接手上一任的代码,看到代码的那一刻,有一种想要砸电脑的冲动,一个方法体内写了无数行代码,到处皆可看到复制粘贴的代码,变量命名也让...【详细内容】
2021-06-09  Tags: 代码  点击:(33)  评论:(0)  加入收藏
SAST,即静态应用程序安全测试,通过静态代码分析工具对源代码进行自动化检测,从而快速发现源代码中的安全缺陷。本文是一个静态源代码分析工具清单,收集了一些免费开源的项目,可从...【详细内容】
2021-06-04  Tags: 代码  点击:(52)  评论:(0)  加入收藏
#你是否经历过这样的场景 打开编辑器,苦思冥想20分钟 只码出了一行“hello world” 又或者,好不容易写了个脚本 结果10行代码15个Bug…… #不慌,这里就有一份指南!...【详细内容】
2021-06-04  Tags: 代码  点击:(46)  评论:(0)  加入收藏
很多同学在学编程时不注重代码质量,养成坏习惯的同时,失去了提升自己编程能力的机会。如何有意提升自己的代码质量呢?我根本就发现不了自己代码中的问题,以为已经写得很棒棒了,怎么办?...【详细内容】
2021-06-03  Tags: 代码  点击:(37)  评论:(0)  加入收藏
▌简易百科推荐
一、Aliyun Java Initializr阿里中间件发布的定制版Spring Initializr。是集文档、erminal、编辑器三个窗口为一体的。 二、Cloud Toolkit简单来说就是可以快速部署远程服务...【详细内容】
2021-07-15  传智教育官方账号    Tags:在线工具   点击:(4)  评论:(0)  加入收藏
本文介绍PacketQueue,相对于FrameQueue来说比较简单,可以类比Android中的MessageQueue。PacketQueue总体介绍 单向链表结构。first_pkt、last_pkt,是链表的起点和终点结点;recyc...【详细内容】
2021-07-13  程序员老z    Tags:源码   点击:(3)  评论:(0)  加入收藏
TCP客户端:1.建立连接套接字,设置Ip和端口监听,socket()2.建立连接 connect3.write() 获取网络流量对象 发送数据4.read()获取网络流量对象 接收数据5.关闭套接字 TCP服务器端1...【详细内容】
2021-07-08  树朦胧    Tags:socket编程   点击:(8)  评论:(0)  加入收藏
Rust的异步功能很强大,但也以晦涩难懂著称。在本文中,我将总结之前提过的一些想法,并给出一些新的点子,看看这些想法放在一起能产生什么效果。...【详细内容】
2021-07-07  弯月  CSDN  Tags:Rust   点击:(6)  评论:(0)  加入收藏
1.进程 2.线程 3.主线程主线程就是java 中main方法 如果是单线程的话,有p1,p2两个对象,他们中间有一条语句。若是单线程,若这条语句出错,则p2不执行了。若是多线程则p2还可以执...【详细内容】
2021-07-04  程序猿凯撒    Tags:线程   点击:(14)  评论:(0)  加入收藏
作者 | edmz译者 | 王强策划 | 万佳多年来,我已经为很多 API 实现了客户端。为此,我整理了一份清单,列出了一些可以改善开发体验的小技巧。这些想法大都与 API 设计或架构无关...【详细内容】
2021-06-29  技术联盟总坛    Tags:API   点击:(16)  评论:(0)  加入收藏
本系列会讲述微信机器人技术的实现,第一讲主要了解微信网页版给我们提供的http接口,这一步是做一个基于微信网页版机器人的基础和难点。本讲将微信网页版的主要接口罗列出,并给...【详细内容】
2021-06-29  闪客sun  博客园  Tags:微信   点击:(12)  评论:(0)  加入收藏
我们看到很多关于在浏览器里使用js-ipfs的问题。这篇文章展示了用js-ipfs搭建最小化的聊天应用的例子,这个应用可以在浏览器中运行。它使用WebRTC去实现浏览器对浏览器的连...【详细内容】
2021-06-25  IPFSFilecoinFIL    Tags:IPFS连接   点击:(14)  评论:(0)  加入收藏
先举例子来理解这2个概念的区别。老师让两个同学去办公室谈话。如果这两同学(进程)是并列跨过办公室门(CPU)的,那么就是并行。如果同学A先进同学B后进入(或者先B后A),或者两人...【详细内容】
2021-06-24  linux技术栈    Tags:并发   点击:(18)  评论:(0)  加入收藏
这些年前端发生了天翻地覆的变化,几乎每隔几个月就有新的框架和技术诞生,有些技术可能你还没来得及学习,它就已经成为过去时了。2021年前端会有哪些变化,哪些技术会脱颖而出呢?Ja...【详细内容】
2021-06-23  梦回故里归来  今日头条  Tags:前端编程   点击:(18)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条