首页 > 其他分享 >《代码大全2》第三章 变量(变量名的力量)

《代码大全2》第三章 变量(变量名的力量)

时间:2024-06-19 16:28:13浏览次数:16  
标签:缩写 第三章 变量 名字 使用 命名 变量名 大全

说到变量命名,先看下面的代码

int a=0;
int b=0;
int c=0;
=========================
int count=0;
int index=0;
int sum=0;

如果在项目中,你更愿意看到哪些命名的变量?

代码是给人看的,不是给机器看的

代码不是给机器看的,更重要的是给人看的,更重要的是代码要让除了你之外的人能看懂,而不是只是你自己能看懂就可以。好的命名,可以直接了当的表达其作用和用途,更容易让人理解。
曾经我就接收了一份别人的JavaScript的程序代码,功能运行没什么毛病,也实现了效果,但看到代码的那一刻我就彻底傻眼了,几乎所有的变量命名都是a1,af,af1,bj,这样的,要么是字母,要么是中文首字母缩写,再加上很多地方也变量声明都没有,再加上JavaScript本身就很难得知变量的类型,看这个代码我感觉我的短寿十年,然后我就跑路了,谁爱来谁来吧!

选择好的变量名的注意事项

命名这个问题,不管是在哪一门编程语言中,都是极其重要的,不管是变量,函数,对象,准确的命名都在一定程度上让你的程序走的更远,而不是早早夭折。
变量的命名不可以过于随意,它不像我们养的宠物,只要我们喜欢,叫它什么都可以,对于宠物来说,名称只是一个代号,并不会影响宠物本身的属性,但是变量不行,变量的名称不能只是单单的代号,它的代表变量本身,就像你不会在介绍自己加宠物狗的时候把它称之为猫一样。

最重要的注意事项

为变量命名时最重要的考虑事项:能够完全的、准确的描述该变量所代表的事物。
通常,对变量的描述就是这个变量的最佳变量名,这样的名称容易阅读,没有歧义,因为它是对该事务的完整描述,所以不会和其它事物混淆。又因为这个名字和所表达的概念相似,也很容易被记忆。
比如说:
到期的支票累计额,好的名字:runningTotal,坏的名字:dqTotal;
用户名,好的名字:username,坏的名字:yhm;
当前日期,好的名字:currentDate,坏的名字:date。
名字应该尽量明确,而不是像x,y,element、temp、i这样可以泛泛得可以用于多种目的,她们并没有像应该得那样提供足够得信息,因此通常都是命名上的败笔。(注意,这里说的是通常,并不是说一定噢)

以问题为导向

一个好记得名字反映得通常都是问题,而不是解决方案。一个好名字通常表达的是“什么”,而不是“如何”。一般而言,如果一个名字反映了计算的某些方面而不是问题本身,那么它反映的就是“如何”,而不是“什么”了,请避免选取这样的名字,而应该在名字中反映出问题本身。

最适当的名字长度

名字不能太长,会使得程序的视觉变得模糊不清,不能为了简短长度而可以采用缩写,不恰当的缩写也会导致无法正确表达和让人理解其用途,缩写应该采用众所周知的,约定熟成的缩写。

除了上诉的注意事项以外,还有:

  • 作用域对变量名的影响(不同作用域相交情况下出现相同变量名,因该在其名字上区分作用域)
  • 变量名中的计算值限定词(计算限定词应该加到名字的最后)
  • 变量名中的常用对仗词(对仗词的使用要准确,能够提高可读性)

书中还对特定类型的数据命名给出了建议,有兴趣的小伙伴建议阅读原文(264-270页)

创建具备可读性的短名字

这个应该是实际编程中经常会遇到的问题,很多程序员应该都为这个名字太长而苦恼过,于是就出现了各种各样的缩写,我见过最多的就是直接使用拼音缩写的,也不能否定有些情况拼音的缩写确实对我们来说更合适。

缩写的一般指导原则
  1. 使用标准的缩写(列在字典中的那些常用缩写)。
  2. 去掉所有非前置元音(computer变成cmptr,screen变成scrn,apple变成appl,integer变成intgr)
  3. 去掉虚词and,or,the等。
  4. 使用每个单词的第一个或前几个字母。
  5. 统一的在每个单词的第一、第二或者第三个字母后截断。
  6. 保留每个单词的第一个和最后一个字母。
  7. 使用名字中的每一个重要单词,最多不超过三个。
  8. 去除无用的后缀,比如ing,ed等
  9. 保留每个音节中最引人注意的发音
    10.确保不要改变变量的含义。
    反复使用上诉技术,直到你把每个变量名的长度缩减到8到20个字符,或者达到你所用的编程语言对变量名的限制字数。(不要为了缩写而缩写,刻意的缩写会让其无法理解,有时候,长一点没关系的,没关系的)

应该避免的名字

  • 避免使用令人误解的名字或缩写
  • 避免使用具有相似含义的名字
  • 避免使用具有不同含义但却有相似名字的变量
  • 避免使用发音相近的名字
  • 避免在名字中使用数字
  • 避免子啊名字中使用拼错单词
  • 避免使用英语中常常拼错的单词
  • 不要仅靠大小写来区分变量名
  • 避免使用多种自然语言(这也是不建议使用拼音命名变量名的原因,因为程序中的命名几乎都是用英语,你无法确定别人看到这个命名时是否知晓该 命名时拼音还是英语)
  • 避免使用标准类型、变量和子程序的名字
  • 不要使用与变量含义完全无关的名字
  • 避免在名字中包含易混淆的字符

注意其中避免和不要的区别噢

要点

  • 好的变量名时提高程序可读性的一项关键要素。对特殊种类的变量,比如循环下标和状态变量,需要加以特殊的考虑。
  • 名字要尽可能的具体。那些太模糊或者太通用以致于能够用于多种目的的名称通常都是很不好的。
  • 现代编程语言很少需要用到缩写。如果你真的要使用缩写,请使用项目缩写字典或者标准前缀来帮助理解缩写。
  • 代码阅读的次数远远多于编写的次数。确保你所取的名字更侧重于阅读方便而不是编写方便。

标签:缩写,第三章,变量,名字,使用,命名,变量名,大全
From: https://blog.csdn.net/u014231068/article/details/139802243

相关文章

  • 06《代码大全》阅读笔记
    《代码大全》是我在软件开发领域的一本必读书籍。这本书几乎涵盖了软件开发的方方面面,从编码到设计、测试到调试等各个环节都有详细的讲解和指导。首先,我被作者对于代码的重视所深深吸引。他在书中强调,代码质量决定了软件的可靠性和可维护性。好的代码应该易读、易懂、易维护。......
  • 阅读笔记:《代码大全》阅读笔记
     整个书籍分为三个主要部分:基础篇、结构篇和设计篇。这一结构合理而紧密,形成了一个有机的体系。基础篇从基本的编程原则入手,强调代码的可读性和可维护性。结构篇深入探讨了代码的组织结构和模块化,为开发者提供了构建大型系统的实践经验。设计篇则引领读者进入系统设计的复杂......
  • 阅读笔记《代码大全》阅读笔记
    首先,《代码大全》强调了软件构建的基本原则。它引导读者深入了解模块化的重要性,让代码更易于管理和理解。清晰性和可维护性也是其关注的焦点,因为清晰易读的代码不仅有助于减少错误,还能提高团队合作效率。其次,书中深入探讨了代码质量。McConnell认为,写出高质量的代码是至关重要......
  • 29.4k star! linux命令大全,带示例,中文易懂!!!
    linux-commandLinux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。离线部署dockerrun--namelinux-command-itd-p9665:3000wcjiang/linux-command:latest离线访问http://localhost:9665/使用命令分类学习资源项目地址:https://github.com/......
  • 操作系统第三章处理机调度与死锁
    1.高级调度与低级调度的主要任务是什么,为什么要引入中级调度高级调度:根据某种算法,将外存上处于后备队列中的作业调入内存,创建进程,分配资源并置入就绪队列低级调度:根据某种算法,决定就绪队列中哪个进程应该获得处理机,并分派程序将处理机分配给被选中的进程中级调度:提高内存利用率......
  • 从零开始学数据结构系列之第三章《先序线索二叉树查找及总代码》
    文章目录查找下一个节点总代码往期回顾查找下一个节点​  我们为啥没有像中序二叉树一样有第一个节点,因为我们一开始最大就是我们的根节点,所以无需遍历去寻找我们的第一个节点,我们的T就是我们的第一个节点​我们回过来看中序线索二叉树的节点应该是怎么写的/*......
  • 第三章:分支结构
    第三章:分支结构一、if分支结构1.基本if结构:(1)导入包: importjava.util.Scanner; importjava.util.*;(2)创建对象: Scannersc=newScanner(System.in);(3)使用: intn=sc.nextInt();//输入一个整数 do......
  • 免费外链网站大全,助力新站收录加速
    Google云端硬盘资产也是Google提供的一项外链资源。本质上,您可以通过Google自己的产品(如文档、表格、表单等)创建指向您网站的外链,并转移部分高公关力量。有关Google权限叠加的完整指南,请点击此处查看,其中包含此链接构建策略的分步教程。Crunchbase是一个备受欢迎的......
  • 第三章:分支结构
    一、if分支结构1.基本if结构:(1)导入包:importjava.util.Scanner;importjava.util.*;(2)创建对象:Scannersc=newScanner(System.in);(3)使用:intn=sc.nextInt();//输入一个整数doubled=sc.nextDouble();//输入一个小数Strings=sc.next();//输......
  • Cognex VisionPro 工具大全及使用指南
    CognexVisionPro工具大全及使用指南在机器视觉领域,CognexVisionPro提供了强大且多样化的工具集,可以满足各种图像处理、特征检测和模式识别的需求。本文将详细介绍这些工具,并提供一个使用示例。目录图像获取和处理工具模板匹配和模式识别工具斑点和特征检测工具坐......