代码整洁之道——有意义的命名(持续更新中)

我们给变量、参数、类、包,源代码和源代码所在目录命名,也给jar文件、war文件和ear文件命名。

We name variables, parameters, classes, packages, source code, and the directory where the source code resides, as well as jar files, war files, and ear files.

命名应该遵循什么规则:

What rules should be followed for naming:

名副其实 Worthy of the name

选个好名字需要花时间,但省下来的时间比花掉的多,一旦发现有更好的名称就应该换掉旧的,这样读你代码的人(包括自己)都会更开心。

Choosing a good name takes time, but it saves more time than it takes. Replace the old one as soon as you find a better name, and the people reading your code (including yourself) will be happier.

变量、函数或类的名称该告诉你它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算名副其实。

The name of a variable, function, or class should tell you why it exists, what it does, and how it should be used. If the name needs to be annotated, it's not really worth of the name.

避免误导 To avoid misleading

程序员必须避免留下掩藏代码本意的错误线索,避免使用与本意相悖的词。

别用accountList来命名一组账号,用accountGroup或者bunchOfAccount,甚至直接用accounts都会好一些。

提防使用外形太相似的词。

应该以同样的方式拼写出同样的概念,这有益于开发工具的自动代码补全选择。

不要用小写字母l和大写字母O作为变量名,和常量“壹”和“零”太像。

Programmers must avoid leaving false clues that hide the intent of the code and avoid using words that contradict it.

Instead of naming a group of accounts accountList, use accountGroup or bunchOfAccount, or even use accounts directly.

Beware of words that are too similar in appearance.

The same concepts should be spelled out in the same way, which benefits the development tool's automatic code completion selection.

Don't use lowercase l and uppercase O for variable names, which are too similar to constants "one" and "zero".

做有意义的区分

使用读得出来的名称

使用可搜索的名称

避免使用编码

    匈牙利语标记法

    成员前缀

    接口和实现

避免思维映射

类名

方法名

别扮可爱

每个概念对应一个词

别用双关语

使用解决方案领域名称

使用源自所涉问题领域的名称

添加有意义的语境

不要添加没用的语境

读代码时也应该遵循这些规则去重命名

转载于:https://www.cnblogs.com/stephen-java/p/10533925.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fixed 语句(C# 参考)

fixed 语句禁止垃圾回收器重定位可移动的变量。fixed 语句只能出现在不安全的上下文中。Fixed 还可用于创建固定大小的缓冲区。 备注 fixed 语句设置指向托管变量的指针并在 statement 执行期间“钉住”该变量。如果没有 fixed 语句,则指向可移动托管变量的指针的作…

React Antd中样式的修改

如果需要对antd的样式进行修改, 进入你要修改的页面 注意:不能直接在自己的文件下面,加入一个css,修改这个class的样式,应该 加入global限定,global {} , 在{}里面写入 .classname {} 然后在设置css样式…

【Python】贪心算法入门

一.引言 本文将通过两个问题和两道例题带你入门贪心算法。 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最优(最好或最有利)的选择,从而希望导致全局最优解的算法。贪心算法不保证找到全局最优…

ASP.NET MVC+LINQ开发一个图书销售站点(9):编辑目录

编辑目录和新建类似,这里我们用MVC提供的辅助类 1.在Model 的BookShopDBDataContext分部类里添加: 2. 在CategoryController添加如下方法(注意:我们添加了后端验证) 3. 修改View下的EditCategory.aspx. (注意:我们用了MVC提供的辅助类生成Tex…

内外边距、浮动、布局相关

关于清除元素的内外边距: 1、行内元素只有左右边距、没有内外边距、内边距在ie6等低版本的浏览器中也会有问题。尽量不要给元素指定行内的内外边距; 2、外边距的合并 使用margin定义块元素的垂直外边距时,可能会出现外边距的合并&#xff…

让vs2008支持jQuery的智能提示!

告诉大家一个非常好的消息,就是现在我们已可以让VS2008同时支持jQuery的智能提示功能啦可以先看看下面的效果图:jquery1.png (18.76 K)2008-3-30 14:37:54jquery2.png (21.18 K)2008-3-30 14:37:54怎样?酷吧,呵呵想实现以上效果只…

为什么要使用Vuex?

为什么要使用Vuex? 1. 假如不使用 1.1 父子组件依赖同一个state 1.2 兄弟组件依赖同一个state 2. 用了Vuex之后 3. 方便记忆和理解 更多专业前端知识,请上 【猿2048】www.mk2048.com

使用注解配置Spring

使用注解配置Spring 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 将对象注册到容器 修改对象的作用范围 值类型注入 引用类型注入 注意: 初始化|销毁方法 转载于:https://www.cnblogs.com/HiJackykun/p/10428728.html

基于cookie的SSO单点登录系统

利用COOKIE实现单点登录功能 近期公司要求帮一个项目实现单点登录功能,在综合考量下决定采用cookie实现,大概的流程如下图所: 转载于:https://www.cnblogs.com/buggeerWang/p/10430770.html

js的栈与堆

JavaScript中基本数据类型和引用数据类型的区别 这是我引用别人的 觉得很好 1、基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型。 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。 当…

android 获取程序,Android获取桌面应用程序

转载请注明出处,谢谢:http://blog.csdn.net/harryweasley/article/details/50057029首先在看这个博客之前, 你可以先看下这个博客,http://blog.csdn.net/harryweasley/article/details/50057707里面介绍了两种方式来获取应用程序的…

等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规

随着等保 2.0 时代的到来,网络安全要求更加严格,应用场景更加丰富,等级保护已成为互联网企业义不容辞的责任。作为国内移动安全领域的技术创新企业,几维安全在积极响应等保2.0时代的战略布局,推出等保2.0检测、等保加固…

js中什么是对象,对象的概念是什么?

我们一直在用对象 可是你真的理解对象吗,js中有一个说法是一切皆对象,其实这里说的应该是 一切皆可看作对象 对象就是可以拥有属性和方法的一个集合 士兵就是一个对象,它拥有身高体重的属性,保家卫国,吃饭睡觉的动作方…

又做了3个极品菜[图]

今天的是: 极品豆角炒鸡蛋 极品黄瓜炒鸡蛋 极品炒菠菜没鸡蛋 其他我做的菜请看 《我做的菜很香很好吃[有图]》 转载于:https://www.cnblogs.com/zjneter/archive/2008/04/13/1151383.html

Spring Integration Java DSL示例

现在已经为Spring Integration引入了新的基于Java的DSL ,这使得可以使用基于纯Java的配置而不是基于Spring XML的配置来定义Spring Integration消息流。 我尝试使用DSL来获得示例集成流–我称其为Rube Goldberg流 ,因为它在尝试大写作为输入传递的字符串…

automake linux,Linux下automake软件编译与发布快速入门

Linux下automake软件编译与发布快速入门2008-04-22eNet&Ciweek进入编辑界面,输入内容如下:AUTOMAKE_OPTIONSforeignbin_PROGRAMSsimserver1 #软件包名称simserver1_SOURCESsimserver1.cpp  #源文件列表,如果有多个则用空格分开LIBS -l…

android fragmentactivity fragment,Android:Activity与Fragment通信(99%)完美解决方案

前言最近一直在想着能否有一种更好的方案来解决:Android中Activity与Fragment之间通信的问题,什么叫更好呢,就是能让Fragment的复用性高,性能还有好(不用反射),代码还要好维护,不需要为每对Activity和Fragm…

分布式人工智能标记语言(DAIML)示例

DAIML(Distributed Artificial Intelligence Markup Language)是用于分布式人工智能系统中智能语言的标记库。DAIML主要分为Pattern和Template两部分,Pattern用于模式匹配,Template用于回答模板,下面将分别介绍两者的示…

Ext.js数据展示问题name展示code

出现以上问题是因为model中定义的类型跟数据库不匹配 去掉js中vehicleModel的type或者改为type:int即可。转载于:https://www.cnblogs.com/feifeicui/p/10438900.html

Solr中的前缀和后缀匹配

搜索引擎都是关于查找字符串的。 用户输入一个查询词,然后从反向索引中检索它。 有时,用户正在寻找的值只是索引中值的子字符串,并且用户可能也对这些匹配感兴趣。 对于德语这样的包含复合词(例如Semmelkndel)的语言&a…