首页 > 其他分享 >编写可读代码的艺术-代码应当易于理解

编写可读代码的艺术-代码应当易于理解

时间:2024-09-27 11:23:42浏览次数:6  
标签:例如 变量 代码 信息 名字 理解 易于 编写

可读性基本定理——代码的写法应当使别人理解它所需的时间最小化
如果真的有人真的完全理解了你的代码,他就应该能改动它、找出缺陷并明白它是如何与你代码的其他部分交互的

就算你从事只有一个人的项目,这个目标也是值得的。那个其他人可能就是6个月的你自己,那时你自己的代码看上去已经很陌生了。而且你永远也不会知道——说不定别人会加入你的项目,或者你丢弃的代码会在其他项目里重用

把信息装到名字里

  1. 避免泛泛的名字(例如tmp和retval)

    tmp这个名字只应用于短期存在且临时性为其主要存在因素的变量

    retval这个名字没有包含很多信息,用一个描述该变量的值的名字来代替它

    像i、j等名字常用作所有索引,但有时候会有比i、j、k更贴切的命名。
    例如多重循环的时候,使用了错误的索引,这样的缺陷很难发现,使用更精确的名字可能会有帮助(索引的第一个字母与数据的第一个字符匹配)

  2. 用具体的名字代替抽象的名字
    在给变量、函数或者其他元素命名时,要把它描述得更具体而不是更抽象

  3. 使用前缀或后缀来给名字附带更多信息
    1.为名字附带更多信息
    一个变量名就像是一个小小的注释。尽管空间不是很大,但不管你在名中挤进任何额外的信息,每次有人看到这个变量名时都会同时看到这些信息。
    因此,如果关于一个变量有什么重要的事情的读者必须知道,那么是值得把额外的词添加到名字中的。
    例如,假设你有一个变量包含一个十六进制字符串
    string id;//例如:af84ef845cd8
    如果让读者记住这个ID的格式很重要的话,你可以把它改成hex_id

    2.带单位的值
    如果变量是一个度量的话(如时间长度或者字节数),那么最好把名字带上它的单位

    3.附带其他重要属性
    这种给名字附带额外信息的技巧不仅限于单位。在对于这个变量存在危险或者意外的任何时候你都该采用它

    例如:

    但不应该给每个变量都加上这样的属性,基本上,如果这是一个需要理解的关键信息,那就把它放在名字里

  4. 决定名字的长度
    当选择好名字时,有一个隐含的约束就是名字不能太长。
    名字越长越难记,在屏幕上占的地方也越大,可能会产生更多的换行

    另一方面,程序员也可能走另一个极端,只用单个单词(或者单一字母)的名字

    有一些指导原则:
    在小的作用域里可以使用短的名字
    作用域小的标识符不用带上太多信息,因为所有的信息(变量的类型、它的初值、如何析构等)都很容易看到,所以可以用很短的名字
    反之,如果一个标识符有较大的作用域,那么它的名字就要包含足够的信息以便含义更清楚

    输入长名字——不再是个问题
    有很多避免使用长名字的理由,但不好输入这一条已经不再有效。我们所见到的所有的编程文本编辑器都有内置的单词补全功能

    首字母缩略词和缩写——团队的新成员能否理解这个名字的含义?
    程序员有时候会采用首字母缩略词和缩写来命令,以便保持较短的名字,例如,把一个类命名为BEManager而不是BackEndManager。这种名字会让人费解。
    而使用eval来代替evaluation,用doc来代替document,用str来代替string是相当普遍的,因此团队的新成员看到FormatStr()可能会理解它是什么意思,然而,理解BEManager可能有点困难

    丢掉没用的词
    有时名字中的某些单词可以拿掉而不会损失任何信息。例如ConvertToString()就不如toString()这个更短的名字,而且也没有丢失任何有用的信息

  5. 利用名字的格式来表达含义
    有目的地使用大小写、下划线等——例如:可以在类成员和局部变量后面加上_来区分它们

标签:例如,变量,代码,信息,名字,理解,易于,编写
From: https://www.cnblogs.com/zhao-zong-yu-hai/p/18323678

相关文章

  • 我,一个小白,居然用 AI 工具修改了公司前端代码!
    背景有一天同事发现公司网站的某个页面上有三个H1标签,懂行的都知道,有三个H1标签虽然不会对网站的访问产生影响,但是对于搜索引擎来讲,就比较麻烦了,因为一般搜索引擎都是靠H1标签、TDK等来对网页的内容进行抓取,然后再进行质量优劣的判断。三个H1标签,搜索引擎就不知道到底应......
  • thinkphp6调用微信商户支付-非工厂模式代码开发
    通过前面10多篇的微信支付开发-支付工厂代码开发我们发现,不管是jsapi支付、app支付、h5支付、native支付或是小程序支付,固定参数基本不变,且又是一家开发。个人建议,最实用的代码输出方式还是采用工具集封装最简单、最直接、最实用。一、支付产品流程图二、微信支付工具集代码......
  • 我,一个小白,居然用 AI 工具修改了公司前端代码!
    背景有一天同事发现公司网站的某个页面上有三个H1标签,懂行的都知道,有三个H1标签虽然不会对网站的访问产生影响,但是对于搜索引擎来讲,就比较麻烦了,因为一般搜索引擎都是靠H1标签、TDK等来对网页的内容进行抓取,然后再进行质量优劣的判断。三个H1标签,搜索引擎就不知道到底应......
  • MATLAB代码的高效部署与发布指南
    在工程和科学计算领域,MATLAB已经成为一个不可或缺的工具。它强大的算法开发环境和仿真能力使得代码部署和发布变得尤为重要。本文将详细介绍MATLAB代码部署和发布的方法,包括使用MATLABCompilerSDK、创建可执行文件、安装程序以及在不同平台上的部署技巧。1.MATLAB代码......
  • 9.27 代码练习,以及教你写自己的qsort函数
    学生成绩系统代码include<stdio.h>typedefstructStudent{intnum;charname[50];intgrade[10];}stu;intcmp(intcount[],int*n){intmax=0;for(inti=0;i<*n;i++){if(count[i]>max){max=count[i];}}returnmax;}intmain(){int......
  • GitLab 中文发行版最新的 17.4 发布了哪些与代码托管、CI/CD、安全合规相关的功能?
    沿袭我们的月度发布传统,极狐GitLab发布了17.4版本,该版本带来了当所有检查通过就会自动合并、WebIDE中的扩展市场现已可用以及获取Kubernetes资源事件等几十个重点功能的改进。下面是部分重点功能的详细解读。极狐GitLab为GitLab的中文发行版,中文版本对国内用户更友好、......
  • pbootcms常用标签代码集合
    内容整理成表格的形式,便于查阅和使用:功能标签参数示例说明模板文件嵌套引用{includefile=***.html}无{includefile=head.html}可以嵌套使用,如:index.html 嵌套 head.html,同时 head.html 中嵌套 comm.html。支持使用子目录。时间格式化标签[list:date]<......
  • pbootcms模板调用友情链接标签代码
    在PBootCMS中,调用友情链接标签非常方便,可以根据不同的需求进行定制化展示。以下是如何使用{pboot:link}标签来调用友情链接的具体示例和解释:友情链接列表示例假设我们需要在一个页面上展示指定分组(如分组ID为1)的友情链接,并且限制显示数量为3个:{pboot:linknum=3gid=1}......
  • 易优cms网站数据库搬家,出现数据表或视图不存在,[错误代码]SQLSTATE[42S02]: Base table
    当你在迁移易优CMS数据库后遇到“数据表或视图不存在”的错误提示时,通常是因为目标数据库中缺少某些表或视图。以下是一些具体的解决步骤:步骤1:确认数据库表结构检查数据库表使用数据库管理工具(如phpMyAdmin)打开目标数据库。检查数据库中是否存在相关表。步骤2:导出并......
  • 易优CMS【错误代码】 SQLSTATE【42S02】:Base table or view not found:1146 Table‘111
    当你遇到“数据表或视图不存在”的错误提示时,通常是因为数据库中缺少某个表或视图。以下是一些具体的解决步骤:步骤1:确认表是否存在检查数据库表使用数据库管理工具(如phpMyAdmin)打开数据库。检查数据库中是否存在表 ey_admin_theme。如果表不存在,需要创建该表。步骤......