java 换行分割_用Java开发自己的Kubernetes控制器,想试试吗?

简洁清爽的代码风格应该是大多数工程师所期待的。在工作中笔者常常因为起名字而纠结,夸张点可以说是编程 5 分钟,命名两小时!究竟为什么命名成为了工作中的拦路虎。

每个公司都有不同的标准,目的是为了保持统一,减少沟通成本,提升团队研发效能。所以本文中是笔者结合阿里巴巴开发规范,以及工作中的见闻针对 Java 领域相关命名进行整理和总结,仅供参考。

一,Java 中的命名规范

好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。不同语言中采用的命名形式大相径庭,Java 中常用到的命名形式共有三种,既首字母大写的 UpperCamelCase,首字母小写的 lowerCamelCase 以及全部大写的并用下划线分割单词的 UPPER_CAMEL_UNSER_SCORE。通常约定,类一般采用大驼峰命名,方法和局部变量使用小驼峰命名,而大写下划线命名通常是常量和枚举中使用。

290a08cae145ca938b91228711856340.png

二,包命名

包名统一使用小写点分隔符之间有且仅有一个自然语义的英文单词或者多个单词自然连接到一块(如 springframework,deepspace 不需要使用任何分割)。包名统一使用单数形式,如果类命有复数含义,则可以使用复数形式。

包名的构成可以分为以下几四部分【前缀】 【发起者名】【项目名】【模块名】。常见的前缀可以分为以下几种:

95af6b34cc9c0c132587e03011198701.png

三,类命名

类名使用大驼峰命名形式,类命通常时名词或名词短语,接口名除了用名词和名词短语以外,还可以使用形容词或形容词短语,如 Cloneable,Callable 等,表示实现该接口的类有某种功能或能力。对于测试类则以它要测试的类开头,以 Test 结尾,如 HashMapTest。

对于一些特殊特有名词缩写也可以使用全大写命名,比如 XMLHttpRequest,不过笔者认为缩写三个字母以内都大写,超过三个字母则按照要给单词算。这个没有标准如阿里巴巴中 fastjson 用 JSONObject 作为类命,而 google 则使用 JsonObjectRequest 命名,对于这种特殊的缩写,原则是统一就好。

5e7a8ff097150db0deb82aa19bab97b0.png

四,方法

方法命名采用小驼峰的形式,首字小写,往后的每个单词首字母都要大写。和类名不同的是,方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。

4.1 返回真伪值的方法

注:Prefix-前缀,Suffix-后缀,Alone-单独使用

5aeceab641b68bcb11a381b2b27b8c31.png

4.2 用来检查的方法

8667c1134f8ec2086e6c61f3016ed9c3.png

4.3 按需求才执行的方法

fe27f208e6caa2044f51f8a3d7097883.png

4.4 异步相关方法

769a38020e75ffb1d0400011ce14e45d.png

4.5 回调方法

0dc02b2f7395de060734dcb598b5a916.png

4.6 操作对象生命周期的方法

15321ad2dec8c67e66a8e9d3255aa0ad.png

4.7 与集合操作相关的方法

6df92d2d8bdde7f9eaeef32f55f95a58.png

4.8 与数据相关的方法

3a70a54e86be498ecbfd27e7a4d65429.png

4.9 成对出现的动词

c31cc6cad306984b52ffde3a62d0b93d.png
666d21dbeee50eb5c1c62be6cfae9bfb.png
7db7b1bcc5235333f46c623dcecd18d3.png

五,变量&常量命名

5.1 变量命名

变量是指在程序运行中可以改变其值的量,包括成员变量和局部变量。变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 computedValues,index、变量命名时,尽量简短且能清楚的表达变量的作用,命名体现具体的业务含义即可。

变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。pojo 中的布尔变量,都不要加 is(数据库中的布尔字段全都要加 is_ 前缀)。

5.2 常量命名

常量命名 CONSTANT_CASE,一般采用全部大写(作为方法参数时除外),单词间用下划线分割。那么什么是常量呢?

常量是在作用域内保持不变的值,一般使用 final 进行修饰。一般分为三种,全局常量(public static final 修饰),类内常量(private static final 修饰)以及局部常量(方法内,或者参数中的常量),局部常量比较特殊,通常采用小驼峰命名即可。

/** * 一个demo * * @author Jann Lee * @date 2019-12-07 00:25 **/public class HelloWorld {    /**     * 局部常量(正例)     */    public static final long USER_MESSAGE_CACHE_EXPIRE_TIME = 3600;      /**     * 局部常量(反例,命名不清晰)     */    public static final long MESSAGE_CACHE_TIME = 3600;    /**     * 全局常量     */    private static final String ERROR_MESSAGE = " error message";    /**     * 成员变量     */    private int currentUserId;    /**     * 控制台打印 {@code message} 信息     *     * @param message 消息体,局部常量     */    public void sayHello(final String message){        System.out.println("Hello world!");    }}

常量一般都有自己的业务含义,不要害怕长度过长而进行省略或者缩写。如,用户消息缓存过期时间的表示,那种方式更佳清晰,交给你来评判。


通用命名规则#

尽量不要使用拼音;杜绝拼音和英文混用。对于一些通用的表示或者难以用英文描述的可以采用拼音,一旦采用拼音就坚决不能和英文混用。正例:BeiJing, HangZhou 反例:validateCanShu命名过程中尽量不要出现特殊的字符,常量除外。尽量不要和 jdk 或者框架中已存在的类重名,也不能使用 java 中的关键字命名。妙用介词,如 for(可以用同音的 4 代替), to(可用同音的 2 代替), from, with,of 等。如类名采用 User4RedisDO,方法名 getUserInfoFromRedis,convertJson2Map 等。

六,代码注解

6.1 注解的原则

好的命名增加代码阅读性,代码的命名往往有严格的限制。而注解不同,程序员往往可以自由发挥,单并不意味着可以为所欲为之胡作非为。优雅的注解通常要满足三要素。

  1. Nothing is strange 没有注解的代码对于阅读者非常不友好,哪怕代码写的在清除,阅读者至少从心理上会有抵触,更何况代码中往往有许多复杂的逻辑,所以一定要写注解,不仅要记录代码的逻辑,还有说清楚修改的逻辑。
  2. Less is more 从代码维护角度来讲,代码中的注解一定是精华中的精华。合理清晰的命名能让代码易于理解,对于逻辑简单且命名规范,能够清楚表达代码功能的代码不需要注解。滥用注解会增加额外的负担,更何况大部分都是废话。
// 根据id获取信息【废话注解】getMessageById(id)
Advance with the time 注解应该随着代码的变动而改变,注解表达的信息要与代码中完全一致。通常情况下修改代码后一定要修改注解。

6.2 注解格式

注解大体上可以分为两种,一种是 javadoc 注解,另一种是简单注解。javadoc 注解可以生成 JavaAPI 为外部用户提供有效的支持 javadoc 注解通常在使用 IDEA,或者 Eclipse 等开发工具时都可以自动生成,也支持自定义的注解模板,仅需要对对应的字段进行解释。参与同一项目开发的同学,尽量设置成相同的注解模板。

a. 包注解

包注解在工作中往往比较特殊,通过包注解可以快速知悉当前包下代码是用来实现哪些功能,强烈建议工作中加上,尤其是对于一些比较复杂的包,包注解一般在包的根目录下,名称统一为 package-info.java。

/** * 落地也质量检测 * 1. 用来解决什么问题 * 对广告主投放的广告落地页进行性能检测,模拟不同的系统,如Android,IOS等; 模拟不同的网络:2G,3G,4G,wifi等 * * 2. 如何实现 * 基于chrome浏览器,用chromedriver驱动浏览器,设置对应的网络,OS参数,获取到浏览器返回结果。 * * 注意:网络环境配置信息{@link cn.mycookies.landingpagecheck.meta.NetWorkSpeedEnum}目前使用是常规速度,可以根据实际情况进行调整 * * @author cruder * @time 2019/12/7 20:3 下午 */package cn.mycookies.landingpagecheck;

b. 类注接

javadoc 注解中,每个类都必须有注解。

/*** Copyright (C), 2019-2020, Jann  balabala...** 类的介绍:这是一个用来做什么事情的类,有哪些功能,用到的技术.....** @author   类创建者姓名 保持对齐* @date     创建日期 保持对齐* @version  版本号 保持对齐*/

c. 属性注解

在每个属性前面必须加上属性注释,通常有一下两种形式,至于怎么选择,你高兴就好,不过一个项目中要保持统一。

/** 提示信息 */private String userName;/** * 密码 */private String password;

d. 方法注释

在每个方法前面必须加上方法注释,对于方法中的每个参数,以及返回值都要有说明。

/**  * 方法的详细说明,能干嘛,怎么实现的,注意事项...  *  * @param xxx  参数1的使用说明, 能否为null  * @return 返回结果的说明, 不同情况下会返回怎样的结果  * @throws 异常类型   注明从此类方法中抛出异常的说明  */

e. 构造方法注释

在每个构造方法前面必须加上注释,注释模板如下:

 /**  * 构造方法的详细说明  *  * @param xxx  参数1的使用说明, 能否为null  * @throws 异常类型   注明从此类方法中抛出异常的说明  */

而简单注解往往是需要工程师字节定义,在使用注解时应该注意一下几点:

  1. 枚举类的各个属性值都要使用注解,枚举可以理解为是常量,通常不会发生改变,通常会被在多个地方引用,对枚举的修改和添加属性通常会带来很大的影响。
  2. 保持排版整洁,不要使用行尾注释;双斜杠和星号之后要用 1 个空格分隔。
id = 1;// 反例:不要使用行尾注释//反例:换行符与注释之间没有缩进int age = 18;// 正例:姓名String name;/** * 1. 多行注释 * * 2. 对于不同的逻辑说明,可以用空行分隔 */

总结

无论是命名和注解,他们的目的都是为了让代码和工程师进行对话,增强代码的可读性,可维护性。优秀的代码往往能够见名知意,注解往往是对命名的补充和完善。命名太南了!

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

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

相关文章

检测网络是否稳定的计算机命令,如何查看自己的网络是否稳定

每当我们的网络慢的时候,我们总想知道自己的网速是否稳定,那么怎么查看自己的网络稳定不稳定呢?下面小编就给大家讲解一下操作步骤!查看自己的网络是否稳定的方法首先我们点击电脑左下角的开始图标,然后在弹出的选项中,我们点击“…

python大神的成长之路_我的Python成长之路

Linux命令-文件、磁盘管理—01 1.文件管理 <1>查看文件信息&#xff1a;ls ls是英文单词list的简写&#xff0c;其功能为列出目录的内容&#xff0c;是用户最常用的命令之一&#xff0c;它类似于DOS下的dir命令。 Linux文件或者目录名称最长可以有265个字符&#xff0c;“…

KMP算法(快速模式匹配)

详细理解看这里&#xff1a;http://kb.cnblogs.com/page/176818/ 或者这里&#xff1a;http://blog.csdn.net/yutianzuijin/article/details/11954939 next[]数组的意义是“除自身外的最大重复子串”。 next数组计算&#xff1a; 理解了kmp算法的基本原理&#xff0c;下一步就是…

发言稿开场白范文_万能演讲开场白范文

ban the banalities that bog down most speech openings. defer the customary “nice-to-be-here” platitudes. direct your audience more into fawning than yawning over your speech opening. how?大部分演讲的开头都总是被那些陈词滥调拖入冷场&#xff0c;这是你应该…

计算机应用专业特色建设情况,【计算机应用论文】计算机应用类专业建设和革新探索(共3022字)...

1.高职高专计算机应用类专业现状剖析1.1专业定位欠准确&#xff0c;职业方向不明确计算机应用类专业相关的职业岗位多&#xff0c;每个职业岗位在知识水平和能力结构上各有侧重&#xff0c;计算机知识、技能体系较庞大&#xff0c;学生在三年时间内不太可能面面俱到、样样精通。…

mac pycharm安装设置_Mac系统Python、PyCharm安装及使用方法详解

一、下载安装Python3解释器使用Python3Python之父Guido van Rossum在邮件列表上宣布 Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持&#xff0c;则需要付费给商业供应商。12**Guido van Rossum 表示&#xff1a;**Lets not p…

《JAVA课程设计》实训第四天——《猜猜看》游戏

第四天&#xff0c;本来想进一步去改进《猜猜看》游戏的。可是非常多问题都不理解。也不熟悉怎么去弄到连接数据库。统计猜对次数&#xff0c;所以并没有进行再多的改动。 基本上就是这种执行结果了 import java.awt.EventQueue; import javax.imageio.ImageIO; import jav…

小凯机器人软件_Cruzr-Cruzr(机器人控制软件)下载 v1.5.20190706.48官方版--pc6下载站...

Cruzr客户端是这款智能云平台商用服务机器人Cruzr的配套软件&#xff0c;多台设备&#xff0c;一键多控&#xff0c;配套远程多机集控系统软件可以进行脚本、地图、视频等批量管理&#xff0c;可实现多台设备异地集中控制、全方位广告投放和同时支持自主巡逻以及指令控制巡逻。…

游戏笔记本计算机购买,2021大学生买电脑,容易犯的七种错误!游戏本和轻薄本买哪个?...

要买电脑的小伙伴们&#xff0c;难道你们指望电脑很好买&#xff1f;怎么买都不会亏&#xff1f;然后只要想买&#xff0c;它就有货&#xff1f;然后怎么买都够用&#xff1f;然后只要喜欢的女孩&#xff0c;一追求就ok&#xff1f;所以今天这期视频&#xff0c;我就随便聊聊大…

gradle安装与配置_gradle相关安装

前言之前一直接触maven&#xff0c;因为换了工作的原因偶然接触了gradle。因为对gradle不太了解&#xff0c;所以在安装与使用的时候出现了这样那样的问题。gradle在Windows系统的安装与配置1、gradle的下载与安装下载链接&#xff1a;https://gradle.org/releases/。(可以根据…

android tag 快捷_Android Studio快捷键使用

logt 生成 TAG标签private static final String TAG "MainActivity";logm 打印方法具体日志Log.d(TAG, "onCreate() called with: " "savedInstanceState [" savedInstanceState "]");logd 打印Log.d()日志 loge logi logw......…

java selenium (二) 环境搭建方法一

webdriver 就是selenium 2。 webdriver 是一款优秀的&#xff0c;开源的&#xff0c;自动化测试框架。 支持很多语言。 本文描述的是用java Eclipse 如何搭建环境 阅读目录首先下载好Eclipse 和配置好Java 环境变量 步骤省略&#xff0c; 请百度方法一 添加jar包 官方下载地…

python拆分excel的sheet为单文件_pandas处理excel一个sheet拆分为多个sheet

指定某一列作为拆分依据,pandas如何把一个excel的一个sheet拆分为多个sheet呢&#xff1f;具体思路如下&#xff1a; 1、读取excel文件获取DataFrame对象df。 2、获取指定列的Series对象&#xff0c;去重该指定列得到分类。 3、循环分类对df做布尔判断写入新的excel。 具体实现…

jquery 树形框 横_利用jQuery设计横/纵向菜单

在网页中&#xff0c;菜单扮演着“指路者”的角色。如何设计一个人性化的菜单呢&#xff0c;下面小编带着大家一起做。效果图&#xff1a;设计历程&#xff1a;1.首先利用html中的和标签进行嵌套&#xff0c;搭起一个整体的框架。如下图所示&#xff1a;Html代码&#xff1a;横…

word和html互换,word与html互转(2) -- html转word

使用忠告使用该方式进行xhtml到word的转换, 简单转换是可以, 但是可能并没有想象中那么满意, 转换出来的word格式并不完美, 比如目录和标题都会丢失, 标题显示看起来一样, 但是是用正文加粗和加大字号来显示的. 毕竟word是一种文档格式, 而html是一种标记性语言, 要想实现完美兼…

2016年3月13日02:03:53

最近状态很糟糕&#xff0c;知道原因但是却又道不清说不明、、&#xff08;也许一句话就可以说明了&#xff1a;毕业季&#xff09; 自身存在太多太多问题了。 平时自己没怎么发现&#xff0c;在这一个多月的时间里&#xff0c;觉得自己完完全全变了一个人了&#xff0c;连我自…

arduino char*转string_Java 中 String 类的常用方法汇总

一、String 类的概念以及特性1、String 类的概念String 类代表字符串&#xff0c;在 java.lang 包中。字符串是常量 &#xff0c;用双引号引起来表示。 它的值在创建之后不能更改 。由 0 或多个字符组成&#xff0c;可以变相的理解成是一个由字符组成的数组。2、String 类的特性…

airtest测试网页_Airtest

软件简介Airtest是一个跨平台的UI自动化测试框架&#xff0c;适用于游戏和App。目前支持Windows和Android平台&#xff0c;iOS支持正在开发中。Airtest提供了跨平台的API&#xff0c;包括安装应用、模拟输入、断言等。 基于图像识别技术定位UI元素&#xff0c;你无需嵌入任何代…

html中的ppt文字不清晰,HTML页面的文字布局与文字效果.ppt

无序列表是一种“项目符号列表”。其中的项目都带有项目符号前缀。该列表包含在无序列表标记.. 内。列表中的每个项目都使用列表标记进行标记&#xff0c;其中LI表示List Item(列表项)。关闭标记是可选的。 输出时每一清单条目缩进&#xff0c;并且以黑点标示 注意清单条目不需…

R文件丢失

1.xml中有错误 2.未选中自动生成 解决&#xff1a; 检查代码&#xff0c;删除更目录后再生成转载于:https://www.cnblogs.com/childyngy/p/5271579.html