如何提升代码可读性?

作为开发者,可能会经常听到“代码首先是写给人看的”、“写可读的代码相当重要”等等。

对于如何使代码的可读性更强,开发者往往都有自己的看法。那么你可曾仔细想过什么才能真正使代码可读性增强。

一些标准答案

无论你使用什么编程语言,你都可能会认同下面的建议可以增强代码的可读性:

好的变量、方法、类名一个变量、类、方法只做一件事一致的缩进,一致的格式减少代码中的嵌套级别

当然,还有很多其他标准答案,比如 Clean Code(Robert Martin著)和Code Complete(Steve McConnell著)两本书中说的,你应该读一读。

或许你要说,这些东西我都知道。那么,下面就是一些你可能没有考虑的、关于代码可读性的更深层次的东西。

读者的经验

给我一段代码,我能在2秒内告诉你这段代码是否写得好,是否具有很强的可读性(至少我会告诉你我的意见)。

同时,如果我将我写得最好的、可读性很高的代码给一个编程新手,他们可能也不会发现这些代码与其他代码有什么不同。

虽然我的代码中有很好的、描述性的变量名,短的命名方法和少量的参数,并且它们只做一件事,各个功能结构清晰地组合在一起,但是这些新手并没有发现我的代码比其他没有考虑结构的代码好读到哪去。

事实上,我经常听到其他人抱怨我的代码中有太多的方法,难以理解,并且变量名称太长,容易混淆。

有经验的开发者与新手读代码的方式有根本的区别

一个有经验的开发者在阅读代码时不会注重编程语言本身的词汇,而会更专注于代码实际上表达的意思——代码的目的是什么,而不是它是如何做的。

而经验不足的开发者在读取代码时,会试图了解代码的实际结构,初学者则更侧重于实际的语言词汇,即代码中的编程语言试图传达的东西。

对他们来说,一个长变量名称不具备描述性,而且会令人迷惑,因为这些变量名会隐藏一些事实,比如NumberOfCoins字面上来看表示一个整型值,而实际上它不仅仅是一个整型值。他们宁愿看到名为X或编号的变量值。

而一个经验丰富的开发者,不会去关心整数、字符串和其他类型的变量,他们只想知道变量在系统、方法的逻辑上下文中表示什么,而不是变量的类型以及如何工作。

学习阅读

学习阅读代码就像是小孩子在学习阅读文章一样。他们在学习阅读时,不会去注意语法和文章传达的思想,而只会关注词语本身的结构。

又比如,一个经验丰富的音乐家可以很轻松地看懂乐谱,而初学者往往需要根据乐谱来找钢琴上对应的琴键或吉他上对应的品数。

可读性约束因素

你在表达你的想法和意见时,有可能会局限于你本身所掌握的词汇量和阅读量,同样,你代码的可读性也有可能局限于你所使用的编程语言以及编程语境。

来看个例子,下面的汇编代码会在DOS屏幕中输出“Hello World!”:

汇编代码 .model small  .stack 100h     .data  msg     db      ‘Hello world!$’     .code  start:          mov     ah, 09h   ; Display the message          lea     dx, msg          int     21h          mov     ax, 4C00h  ; Terminate the executable          int     21h     end start  

语言本身的复杂性,导致编写的代码难以阅读。无论你是个多么优秀的程序员,这种代码的可读性对你来说总会有上限的。

现在再来看看C#中的Hello World:

C#代码 public class Hello1  {     public static void Main()     {        System.Console.WriteLine(“Hello, World!”);     }  }  

下面是Ruby的:

Ruby代码 puts “Hello, world”  

你知道Ruby为什么如此流行了吧!如果你了解Ruby语言中大量的词汇和语法结构,你会发现你可以很清楚地表达一个事物。

我想说的是,你拥有的词汇量越大,你表达的方式就会越简洁,可读性就越高,当然,这是对于那些同样拥有高词汇量的读者来说的。

我们可以得出什么?

从上面的内容中可以得出,我们的词汇量和经验会影响代码的可读性。我们还需要去考虑谁将阅读我们的代码,他们的词汇量和经验如何。

在C#中,通常会争论是否该使用条件运算符,比如我们应该写这样的代码:

C#代码 var nextAction = dogIsHungry ? Actions.Feed : Actions.Walk;  

还是这样的:

C#代码 var nextAction = Actions.
None  if(dogIsHungry)  {     nextAction = Actions.Feed  }  else  {     nextAction = Actions.Walk;  }  

我以前会说第2种方式更好,但我发现我经常会写第1种。现在如果有人问我哪种好,我会告诉他“视情况而定”。我的意思是,你需要看读你代码的人是否了解条件运算符。

编程语言也如同普通语言学习,比如英语,有人认为英语中有大量的词汇和荒谬的语法,应该减少一些,这样学习起来会更容易。但是,如果这样,就难以简洁地传达信息了。

那么你认为,在开发中,应该有一种复杂的编程语言来增强开发者的表达能力,增强代码的简洁性和可读性(当然,这需要足够多的学习成本),还是应该保持简单的编程语言,来写复杂的、较长的代码呢?

时间: 2024-08-28 12:06:36

如何提升代码可读性?的相关文章

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

代码可读性是计算机编程领域中普遍存在的问题.这也是我们成为开发者首先要学习的事情之一.本文会详细介绍在编写强可读性代码时最佳实践中最重要的一部分内容. 1 - 注释和文档 IDE(Integrated Development Environmnet,集成开发环境)在过去数年中已经存在了很长时间.使用 IDE 注释代码比以往容易得多.某些确切的注释标准可以让 IDE 和其它工具以不同的方式来完成注释. 看个示例: 我在这里添加到函数定义前的注释可以在使用函数的时候显示出来,甚至在其它文件中使用这个

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

具有较强可读性的代码,能帮助你调试程序,不让自己活得太累. 代码可读性是计算机编程领域中普遍存在的问题.这也是我们成为开发者首先要学习的事情之一.本文会详细介绍在编写强可读性代码时最佳实践中最重要的一部分内容. 1 – 注释和文档 IDE(Integrated Development Environmnet,集成开发环境)在过去数年中已经存在了很长时间.使用 IDE 注释代码比以往容易得多.某些确切的注释标准可以让 IDE 和其它工具以不同的方式来完成注释. 看个示例: 我在这里添加到函数定义前

三年0故障总结,提升代码质量的秘诀

该文章来自于阿里巴巴技术协会(ATA)精选文章. 个人经历 对我代码质量影响最大的是在一家外资企业,在这家公司我觉得有以下几个方面做的很不错. 团队编码风格统一 统一到什么程度? 不看代码作者,你很难区分代码是谁写的(在目前公司一些团队也能达到这个标准). 个人观点: 这样做有什么好处?团队中每个人阅读代码都很容易,减少很多沟通,维护成本( 代码阅读的次数远远大于变更的次数),并且心情非常愉悦.有人肯定觉得愉悦有点夸张,举个栗子: 有一些代码,如果不是由于与工作内容有关联,你是否有种这辈子都不情

PHP开启opcache提升代码性能

  PHP开启opcache提升代码性能         APC在PHP5.4及以下版本是性能最好的代码缓存.不过PHP升级到5.5及以上后,APC不再有效.需要使用Zend的OpCache扩展. 配置指令如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [opcache] zend_extension=opcache.so opcache.enable_cli=1 ;共享内存大小, 这个根据你们的需求可调 opcache.memory_consumption=

javascript-问题如图,js代码可读性差。想知道差在哪里。请各位指出。不胜感激

问题描述 问题如图,js代码可读性差.想知道差在哪里.请各位指出.不胜感激 解决方案 第一,变量名要能体现所表示的内容,让他人能一看就明白什么意思. 第二,就是 if else 逻辑控制的问题,上面有人解释得比较清楚了. 第三,像 "未确认数据不能编制单元号!" "宗地代码不足19位不能编制单元号!" "已生成的不动产单元号不能重复编制!" 此类的返回消息应定义为常量.或者用一个变量保存,最后统一返回. 解决方案二: 因为你每个判断都是retur

PostgreSQL 9.6 vacuum freeze大幅性能提升 代码浅析

PostgreSQL 9.6 vacuum freeze大幅性能提升 代码浅析 作者 digoal 日期 2016-10-02 标签 PostgreSQL , 9.6 , vacuum freeze , visibility map , skip frozen page 背景 PostgreSQL的tuple(即记录)头信息中有两个字段分别为XMIN,XMAX用于标记行产生与变更的事务号,以标示记录的版本号,事务的可见性等. 这个事务号是32BIT的长度,因此PG设计了一个事务存活的最长时间是约

2.2、Android Studio通过注解提升代码检测

使用像Lint这样的代码检测工具可以帮助你发现问题和提升代码,但是代码检测在有些地方很难应用.例如,Android的资源ID,使用一个int类型来表示字符.图像.颜色或者其他资源类型所以代码检测工具不能分辨这是一个字符串资源,还是一个颜色资源.这种情况下,即使你使用代码检测工具,你的app可能会渲染失败或者不能运行. 注解允许你为Lint这样的代码检测工具提供提示来帮助Lint检测更深层次问题.当你使用代码检测工具的时候,注解可以帮助你检测问题,比如空指针异常和资源类型冲突. Android支持

提高代码可读性的十大注释技巧分享_相关技巧

本文讲述了提高代码可读性的十大注释技巧.分享给大家供大家参考,具体如下: 很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间.其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了.下面分享十个加注释的技巧: 1. 逐层注释 为每个代码块添加注释,并在每一层使用统一的注释方法和风格.例如: 针对每个类:包括摘要信息.作者信息.以及最近修改日期等: 针对每个方法:包括用途.功能.参数和返回值等. 在

也谈提升js代码可读性的小技巧

逻辑扁平化 我们工作中,可能会碰到一些比较复杂的逻辑,比如:满足条件1,不然XX:满足条件2,不然XX--如此都满足了才OO,写出来大概是这样:  代码如下 复制代码 if (condition1) {   if (condition2) {     if (condition3) {       // do       // a       // lot     } else {       // do zz     }   } else {     // do oo   } } else {