你真的会给变量命名吗?

汇川PLC编程:变量命名用中文真的好吗?一个设置让你告别编译错误 本文探讨了汇川PLC编程中使用中文变量命名的优势与实操方法,详细解析了如何通过设置'非法变量定义'选项避免编译错误。通过实际案例和数据分析,展示了中文命名在提升代码可读性和工程效率方面的显著效果,特别是在工业自动化领域的应用价值。 阅读详情

有读者看到标题就开始敲键盘了,我知道,命名不就是不能用 abc、123 命名,名字要有意义嘛,这有什么好讲的? 然而,即便懂得了名字要有意义,很多程序员依然无法逃离命名沼泽。

不精准的命名

什么叫精准? 废话不多说,CR 一段代码:

 public void processChapter(long chapterId) {
   Chapter chapter = this.repository.findByChapterId(chapterId);
   if (chapter == null) {
     throw new IllegalArgumentException("Unknown chapter [" + chapterId + "]");
 t    
   }
   
   chapter.setTranslationState(TranslationState.TRANSLATING);
   this.repository.save(chapter);
 }

看上去挺正常。 但我问你,这段代码在干嘛?你就需要调动全部注意力,去认真阅读这段代码,找出其中逻辑。经过阅读发现,这段代码做的就是把一个章节的翻译状态改成翻译中。

为什么你需要阅读这段代码细节,才知道这段代码在干嘛?

问题就在函数名,processChapter,这个函数确实是在处理章节,但这个名字太宽泛。如果说“将章节的翻译状态改成翻译中”叫做处理章节,那么:

  • “将章节的翻译状态改成翻译完”
  • “修改章节内容”

是不是也能叫处理章节? 所以,如果各种场景都能叫处理章节,那么处理章节就是个宽泛名,没有错,但不精准!

表面看,这个名字是有含义,但实际上,并不能有效反映这段代码含义。 如果我在做的是一个信息处理系统,你根本无法判断,是一个电商平台,还是一个图书管理系统,从沟通的角度看,这就不是一个有效的沟通。要想理解它,你需要消耗大量认知成本,无论是时间,还是精力。

命名过于宽泛,不能精准描述,这是很多代码在命名上存在的严重问题,也是代码难以理解的根源所在。

或许这么说你的印象还是不深刻,看看下面这些词是不是经常出现在你的代码里:data、info、flag、process、handle、build、maintain、manage、modify 等等。这些名字都属于典型的过宽泛名字,当这些名字出现在你的代码里,多半是写代码的人当时没有想好用什么名字,就开始写代码了。

回到前面那段代码上,如果它不叫“处理章节”,那应该叫什么?

  • 命名要能够描述出这段代码在做的事情 这段代码在做的事情就是“将章节修改为翻译中”。那是不是它就应该叫 changeChapterToTranlsating呢? 相比于“处理章节”,changeChapterToTranlsating这个名字已经进了一步,然而,它也不算是一个好名字,因为它更多的是在描述这段代码在做的细节。 之所以要将一段代码封装起来,是我们不想知道那么多细节。如果把细节平铺开来,那本质上和直接阅读代码细节差别不大。
  • 一个好的名字应该描述意图,而非细节 就这段代码而言, 我们为什么要把翻译状态修改成翻译中,这一定是有意图。我们把翻译状态修改成翻译中,是因为我们在这里开启了一个翻译的过程。所以,这段函数应该命名 startTranslation。

用技术术语命名

你真的会给变量命名吗?

常见得不能再常见的代码,但却隐藏另外一个典型得不能再典型的问题:用技术术语命名。

这个 bookList 变量之所以叫 bookList,原因就是它声明的类型是 List。这种命名在代码中几乎是随处可见的,比如 xxxMap、xxxSet。

这是一种不费脑子的命名方式,但这种命名却会带来很多问题,因为它是一种基于实现细节的命名方式。

面向接口编程,从另外一个角度理解,就是不要面向实现编程,因为接口是稳定的,而实现易变。虽然在大多数人的理解里,这个原则是针对类型的,但在命名上,我们也应该遵循同样的原则。为什么?我举个例子你就知道了。

比如,如果我发现,我现在需要的是一个不重复的作品集合,也就是说,我需要把这个变量的类型从 List 改成 Set。变量类型你一定会改,但变量名你会改吗?这还真不一定,一旦出现遗忘,就会出现一个奇特的现象,一个叫 bookList 的变量,它的类型是一个 Set。这样,一个新的混淆产生了。

有什么更好的名字吗?我们需要一个更面向意图的名字。其实,我们在这段代码里真正要表达的是拿到了一堆书,所以,这个名字可以命名成 books。 List<Book> books = service.getBooks(); 这个名字其实更简单,但从表意的程度上来说,它却是一个更有效的名字。

虽然这里我们只是以变量为例说明了以技术术语命名存在的问题,事实上,在实际的代码中,技术名词的出现,往往就代表着它缺少了一个应有的模型。

比如,在业务代码里如果直接出现了 Redis:

你真的会给变量命名吗?

通常来说,这里真正需要的是一个缓存。Redis 是缓存这个模型的一个实现:

你真的会给变量命名吗?

再进一步,缓存这个概念其实也是一个技术术语,从某种意义上说,它也不应该出现在业务代码。 这方面做得比较好的是 Spring。使用 Spring 框架时,如果需要缓存,我们通常是加上一个 注解:

你真的会给变量命名吗?

之所以喜欢用技术名词去命名,一方面是因为,这是习惯的语言,另一方面也是因为学写代码,很大程度上是参考别人代码,而行业里面优秀的代码常常是一些开源项目,而这些开源项目往往是技术类项目。在一个技术类的项目中,这些技术术语其实就是它的业务语言。但对于业务项目,这个说法就必须重新审视了。

如果这个部分的代码确实就是处理一些技术,使用技术术语无可厚非,但如果是在处理业务,就要尽可能把技术术语隔离开来。

  • xxxMap这种命名表示映射关系,比如:书id与书的映射关系,不能命名为bookIdMap么? Map 表示的是一个数据结构,而映射关系我会写成 Mapping

用业务语言写代码

无论是不精准的命名也好,技术名词也罢,归根结底,体现的是同一个问题:对业务理解不到位。

编写可维护的代码要使用业务语言。怎么才知道自己的命名是否用的是业务语言呢? 把这个词讲给产品经理,看他知不知道是怎么回事。

从团队的角度看,让每个人根据自己的理解来命名,确实就有可能出现千奇百怪的名字,所以,一个良好的团队实践是,建立团队的词汇表,让团队成员有信息可以参考。

团队对于业务有了共同理解,我们也许就可以发现一些更高级的坏味道,比如说下面这个函数声明:

你真的会给变量命名吗?

确认章节内容审核通过。这里有一个问题,chapterId 是审核章节的 ID,这个没问题,但 userId 是什么呢?了解了一下背景,我们才知道,之所以这里要有一个 userId,是因为这里需要记录一下审核人的信息,这个 userId 就是审核人的 userId。

你看,通过业务的分析,我们会发现,这个 userId 并不是一个好的命名,因为它还需要更多的解释,更好的命名是 reviewerUserId,之所以起这个名字,因为这个用户在这个场景下扮演的角色是审核人(Reviewer)。

你真的会给变量命名吗?

这个坏味道也是一种不精准的命名,但它不是那种一眼可见的坏味道,而是需要在业务层面上再进行讨论,所以,它是一种更高级的坏味道。

能够意识到自己的命名有问题,是程序员进阶的第一步。

 @GetMapping("getTotalSettlementInfoByYear")
 @ApiOperation("公司结算信息按年求和")
 public Result<List<RepMonthCompanyDTO>> getTotalSettlementInfoByYear(@RequestParam String year) {
 List<RepMonthCompanyDTO> list = repMonthCompanyService.getTotalSettlementInfoByYear(year);
 return new Result<List<RepMonthCompanyDTO>>().ok(list);
 }

名字长不是问题,问题是表达是否清晰,像repMonthCompanyService这个名字,是不太容易一眼看出来含义的。

另外,传给 service 的参数是一个字符串,这个从逻辑上是有问题的,没有进行参数的校验。后面的内容也会讲到,这个做法是一种缺乏封装的表现。

变量名是 list,按照这一讲的说法是用技术术语在命名。

再有,这个 URI 是
getTotalSettlementInfoByYear,这是不符合 REST 的命名规范的,比如,动词不应该出现在 URI 里,分词应该是“-”,byYear 实际上是一个过滤条件等等。

不管是日本人设计的 Ruby还是巴西人设计的 Lua,各种语法采用的全都是英语。所以,想要成为一个优秀的程序员,会用英语写代码是必要的。 你肯定听说过,国内有一些程序员用汉语拼音写代码,这就是一种典型坏味道。而且程序设计语言已支持 UTF-8,用汉语拼音写代码,还不如用汉字直接写代码。这场景太低级了,不过多讨论。

违反语法规则的命名

CR一段代码:

 public void completedTranslate(final List<ChapterId> chapterIds) {
   List<Chapter> chapters = repository.findByChapterIdIn(chapterIds);
   chapters.forEach(Chapter::completedTranslate);
   repository.saveAll(chapters); 
 }

乍看写得还不错,将一些章节信息标记为翻译完成。似乎方法名也能表达这意思,但经不起推敲。 completedTranslate 并不是一个正常的英语方法名。从这个名字你能看出,作者想表达的是“完成翻译”,因为已经翻译完了,所以用完成时的 completed,而翻译是 translate。这个函数名就成了 completedTranslate。

一般命名规则是:

  • 类名是个名词 表示一个对象
  • 方法名是个动词或动宾短语 表示一个动作

以此为标准判断,completedTranslate 并不是一个有效的动宾结构。如果把这个名字改成动宾结构,只要把“完成”译为 complete,“翻译”用成它的名词形式 translation 就可以了。所以,这个函数名可以改成 completeTranslation:

 public void completeTranslation(final List<ChapterId> chapterIds) {
   ...
 }

这并不是个复杂的坏味道,但却随处可见。 比如,一个函数名是 retranslation,其表达的意图是重新翻译,但作为函数名,它应该是一个动词,所以,正确的命名应该是 retranslate。

只要你懂得最基本的命名要求,知道最基本的英语规则,就完全能够发现这类坏味道。

不准确的英语词汇

有一次,我们要实现一个章节审核的功能,一个同事先定义出了审核的状态:

 public enum ChapterAuditStatus {
     PENDING,
     APPROVED,
     REJECTED;
 }

有问题吗?看不出来,一点都不奇怪。如果你用审核作为关键字去字典网站上搜索,确实会得到 audit 这个词。所以,审核状态写成 AuditStatus 太正常了。

然而,看到这个词的时候,我的第一反应就是这个词好像不太对。因为之前我实现了一个作品审核的功能,不过我写的定义是这样的:

 public enum BookReviewStatus {
     PENDING,
     APPROVED,
     REJECTED;
 }

抛开前缀不看,同样是审核,一个用 audit,一个用 review。本着代码一致性,希望这两个定义采用同样词汇。

搜索引擎里查下。原来,audit 有更官方的味道,更合适的翻译应该是审计,而 review 则有更多核查的意思,二者相比,review 更适合这里的场景。于是,章节的审核状态也统一使用了 review:

 public enum ChapterReviewStatus {
     PENDING,
     APPROVED,
     REJECTED;
 }

这个坏味道就是个高级的坏味道,英语单词用得不准确。 但这个问题确实是国内程序员不得不面对的一个尴尬的问题,英语没那么好,体会不到不同单词之间差异。

很多人就是把中文扔到 Google 翻译,然后从诸多返回的结果中找一个自己看着顺眼的,而这也往往是很多问题出现的根源。这样写出来的程序看起来就像一个不熟练的外国人在说中文,虽然你知道他在说的意思,但总觉得哪里怪怪的。

最好的解决方案还是建立业务词汇表。一般情况下,我们都可以去和业务方谈,共同确定一个词汇表,包含业务术语的中英文表达。这样在写代码的时候,你就可以参考这个词汇表给变量和函数命名。

下面是一个词汇表的示例,从这个词汇表中你不难看出:

  • 词汇表给出的都是业务术语,同时也给出了在特定业务场景下的含义
  • 它也给出了相应的英文,省得你费劲心思去思考

遇到了一个词汇表中没有的术语,就找出这个术语相应的解释,然后补充到术语表。

你真的会给变量命名吗?

用集体智慧,而非个体智慧。你一个人的英语可能没那么好,但一群人总会找出一个合适的说法。业务词汇表也是构建通用语言的一部分成果。

英语单词的拼写错误

我再给你看一段曾经让我迷惑不已的代码:

 public class QuerySort {
     private final SortBy sortBy;
     private final SortFiled sortFiled;
     ...
 }

初看这段代码时,我还想表扬代码的作者,他知道把查询的排序做一个封装,比起那些把字符串传来传去的做法要好很多。

但仔细看,sortFiled 是啥?排序文件吗?为啥用的还是过去式?归档? 找出这段代码的作者,向他求教,果然他把单词拼错了。

偶尔的拼写错误不可避免,国内的拼写错误比例是偏高的。

像 IntelliJ IDEA 这样的 IDE 甚至可以给你提示代码里有拼写错误(typo),只要稍微注意一下,就可以修正很多这样低级错误。

总结

两个典型的命名坏味道:

不精准的命名; 用技术术语命名。

命名是软件开发中两件难事之一(另一个难事是缓存失效),不好的命名本质上是增加我们的认知成本,同样也增加了后来人(包括我们自己)维护代码的成本。

  • 好的命名要体现出这段代码在做的事情,而无需展开代码了解其中的细节
  • 再进一步,好的命名要准确地体现意图,而不是实现细节
  • 更高的要求是,用业务语言写代码

好的命名,是体现业务含义的命名。

几个英语使用不当造成的坏味道:

  • 违反语法规则的命名
  • 不准确的英语词汇
  • 英语单词的拼写错误

还有一些常见的与语言相关的坏味道:

  • 使用拼音进行命名
  • 使用不恰当的单词简写(比如,多个单词的首字母,或者写单词其中的一部分)

如何从实践层面上更好地规避这些坏味道:

  • 制定代码规范,比如,类名要用名词,函数名要用动词或动宾短语
  • 要建立团队的词汇表
  • 要经常进行CR

编写符合英语语法规则的代码。

变量命名规范 一、驼峰命名法 使用大小写字母混合命名变量和函数。 如:mciSendString();第一个字母小写,每个单词的首字母大写。 二、匈牙利命名法 在windows下开发常用。常用命名规则为:变量名 =变量类型(前缀) +英文单词意思。 前缀首字母小写,英文单词意思首字母大写。 前缀 类型 a 数组 (Array) b 布尔值 (Boolean) by 字节 (Byte) c... 阅读详情

相关推荐

MacOS多次踩坑后成功安装Homebrew

来一次性成功安装Homebrew吧 官网提供的安装脚本无法成功安装Homebrew,原因大家都懂的,故采用脚本安装的方式。 下载homebrew的安装脚本brew_install 在Download路径下执行如下脚本 curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install 修改brew_install脚本 修改brew_install脚本。如果你的脚本打开之后是如下

weixin_41847116的博客 1981

每个python初学者都会犯的变量命名错误

关于python的命名规范,我后续会专门写一篇文章,本文只讨论初学者都会犯的一个变量命名错误,避免这个错误,就可以避免很多稀奇古怪的问题 1、变量命名要避开python内置函数名称 初学python,你还不习惯给变量起名字,刚刚接触了几个单词,于是给变量起名字的时候就用上了,不仅如此,你还以为这样命名很好的表达了这个变量的用途,比如下面的变量命名方式 str = "这是字符串" list ...

KWSY2008的专栏 2546

Ai数字人直播系统源码部署

虚拟形象定制,直播内容智能生成,多语言支持,智能互动,声音克隆,24 小时不间断直播,多平台直播,智能数据分析,实时情感识别,视频合成,Ai数字人直播系统源码出售,Ai数字人直播系统源码部署实现 AI 数字人 24 小时不间断直播功能是一个较为复杂的任务,涉及到多个方面,如直播流的推送、内容的持续生成、系统的稳定性保障等。以下为你提供一个简化的实现思路和示例代码,借助 Python 结合 FFmpeg 工具来模拟 24 小时不间断直播。

weixin_ggwwsscc的博客 1255

代码优化(一):Java代码命名规范

编程中最难的事情 —— 命名! 怎么做好命名规范,这里结合了项目,分成四个等级。为以下: 基础:命名风格 第一级:精准命名,体现意图 第二级:用业务语写代码 第三级:编写符合英语语法规则的代码 基础:命名风格 每个公司都有自己的命名风格,比较有名的就是阿里开源的《阿里巴巴Java开发手册泰山版》,非常推荐去官网下载阅读。 像不要用中文、拼音、缩写这些很常见的就不说了;这里结合个人的项目,摘取了一些容易被忽视的规范,审视一下是否已经中招: 抽象类命名使用 Abstract 或 Base 开

你不知道你不知道的事 746

Megatron单机多卡Qwen2.5:pre-train+sft

英伟达:https://github.com/NVIDIA/Megatron-LM/releases/tag/core_r0.8.0阿里:https://github.com/alibaba/Pai-Megatron-Patch/releases/tag/v0.10.2。

weixin_46873015的博客 2178

Python与CAD系列基础篇(十)图形复制、移动、删除

①通过pyautocad连接AutoCAD进行处理②通过ezdxf处理dxf格式文件。进行图形复制、移动、删除的方法。pyautocad方式。pyautocad方式。

weixin_43894929的博客 2209

变量命名总结

我在编程的时候发现自己对变量的命名比较混乱,有时候命名无厘头也没有统一的规则,根本没有辨识性。故今天来对变量命名的技巧和原则做个总结,一是分享同大家学习,二也是勉励自己,编程路漫漫,定不是一朝促成,需要长久坚持与学习! 一. 命名法则 目前,业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。 1. 驼峰命名法 命名法则:是指第一个单词小写·,从第二个单词开始每个单词首字母大写。 下面是驼峰命名法来命名的变量和函数的,如下: studengName

kaolagirl的博客 5779

RML2018.01a数据集的读取与使用

基于深度学习的自动调制识别

QAQIknow的博客 1万+

编程命名规范以及常用变量命名大全

写代码过程中,规范的命名是非常重要的,良好的变量命名可以提高代码的可读性和可维护性。

Hemri2580的博客 8443

RT-DETR改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)

为了弥补现有 IoU 损失在不同检测任务中泛化性弱和收敛速度慢的问题,·Inner-IoU·通过引入比例因子 “ratio” 来控制辅助边界框的尺度大小,利用不同尺度的辅助边界框来计算损失,从而加速边界框回归过程。

Limiiiing的博客 1964

【WorkBuddy专栏61】字节的AI打法为什么一直在变——WorkBuddy/CodeBuddy vs 字节Trae/TRAE Work/豆包全维度对比

【WorkBuddy专栏61】字节的AI打法为什么一直在变——WorkBuddy/CodeBuddy vs 字节Trae/TRAE Work/豆包全维度对比

AI人人懂 2738

良好的函数/变量命名

本文介绍了软件开发过程中一些良好函数、变量的命名规则。

weixin_41733034的博客 1767

8.26华为OD机试真题 新系统 - 仓库查询 (Java/Py/C/C++/Js/Go)

8.26华为OD机试真题 新系统 - 仓库查询 (Java/Py/C/C++/Js/Go)

算法大师! 1730

你真的很会命名?Python 命名法了解一下

帕斯卡(Pascal)命名法下划线命名法匈牙利命名法(Hungarian)m_lpszStr表示指向一个以0字符结尾的字符串的长指针成员变量匈牙利命名法分为系统和应用两种。系统着眼于类型。应用着眼于语义,比如col表示行,c表示计数。

CharlesShan1的博客 1129

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

如何给变量命名-彻底告别变量命名的苦恼

变量名的力量 看完代码大全第11章『变量名的力量』,我想根据我们目前 最容易遇到的以及对于我们目前最需要重视的方面,提炼出一些书中的精华。在这经典之上再进行浓缩一下。 解释一个概念: 你不能像给狗起名字那样给变量起名字。 因为:狗和狗的名字是不同的东西。而变量和变量名就本质而言却是同一事物。不夸张的说,变量的好坏取决于它的命名的好坏!

godkun的博客 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

编程变量命名的一些技巧

C是一门朴素的语言,你使用的命名也应该这样。与Modula-2和Pascal程序员不同,C程序员不使用诸如“ThisVariableIsATemporaryCounter”这样“聪明”的名字。C程序员应该叫它“tmp”,这写起来更简单,也不会更难懂。 然而,当面对复杂情况时就有些棘手,给全局变量取一个描述性的名字是必要的。把一个全局函数叫做“foo”是一种目光短浅的行为。全局函数也一样,如果你有

shengabc的专栏 7888

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[C#]变量命名

变量名中常用的对仗词 特定数据类型的命名 循环下标命名 简单循环变量名用i、j、k,嵌套循环用teamIndex、eventIndex更具有描述性的变量名。 状态变量命名 状态变量命名不要出现flag,最好用枚举变量、具名常量或用作具名常量的全局变量来赋值。 临时变量命名 用真正的变量来代替临时变量。(其实不存在临时变量的说法,所有的变量都算是临时的) 布尔变量命名 列出几种...

C# 1421

变量如何命名

原文链接:https://www.cnblogs.com/dolphin0520/p/10639167.html 一.变量命名风格   变量命名风格通常会根据不同的变量类型来区分,以Java语言为例,根据变量类型不同有两种命名风格: 1)类成员变量、局部变量   类成员变量、局部变量通常采用驼峰命名风格,如下: 1 String use...

SS413413的博客 687

变量命名的三种方法

转载地址:http://blog.youkuaiyun.com/arthur_d/article/details/8263294 一、匈牙利命名法【Hungarian】:       广泛应用于象Microsoft Windows这样的环境中。       Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西

fcauto2012的博客 4460

如何命名变量,让变量名更加优雅

在开发的过程中,我们总是会疑惑,如何给这个变量命名才能让使自己的代码更容易被别人理解。当leader review完代码时,有时会指出我们变量命名不合理,那么我们如何才能让命名合理化? 1、根据自己代码的意义来命名: eg:获取用户信息:getUserInfo 2、研究代码的上下文,观察之前代码的命名风格 function getConfigureList() { return dispatch...

USTC-sparks 2478

变量的命名规则

变量命名规则: (1)变量名首字母必须为字母(a-z A-Z),下划线(),或者美元符号()开始,php编程中所有变量必须以)开始,php编程中所有变量必须以)开始,php编程中所有变量必须以开始。(有些编译器已经支持中文变量名了) (2)变量名只能是字母(a-z A-Z),数字(0-9),下划线()的组合,并且之间不能包含空格,数字不能放在变量名首位。 (3)变量名不能使用编程语言的保留字。比如...

javascript_meng的博客 3862

JavaScript 变量命名规范

JavaScript 变量命名规范

qq_51626500的博客 1050

C++ 变量命名规则与命名方案

命名规则 在名称中只能使用字母字符、数字和下划线(_) 名称的第一个字符不能是数字 区分大写字符与小写字符 不能将C++关键字用作名称 以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器机器使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符 C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制 命名方案 函数名可以使用骆驼命名法,变量名使用匈...

benobug的博客 6005

变量命名规则

变量命名规则:变量名首字母必须为字母(a-z A-Z),下划线(_),或者美元符号($)开始,php编程中所有变量必须以$开始。(有些编译器已经支持中文变量名了)变量名只能是字母(a-z A-Z),数字(0-9),下划线(_)的组合,并且之间不能包含空格,数字不能放在变量名首位。变量名不能使用编程语言的保留字。比如在javascript中不能使用true,false,while,case,brea...

浩瀚之水的专栏 2271
上一篇: 不愧是 GitHub 上标星 120K 的手册,真细啊
下一篇: 猛刷《Java权威面试指南(阿里版)》,“金三银四”offer指定有你一份
superjava_
博客等级 码龄5年 254粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值