参与国际化项目一定要遵循的java命名规范
笔者最近帮助一些朋友应聘远程工作(一般都是一些国外的项目),国外的项目负责人一般都会要求提供github账号或者一些源代码,很多朋友在这一关就被筛选掉了,其中不乏一些我认为技术非常厉害的行业大牛,他们都研发过很多的大型项目,经验与技术实力都非常不错。那究竟是为什么呢?我经过仔细的研究,发现他们都有一个共同点,就是命名规范不太严谨。我对这些在应聘远程项目第一关就被筛选掉了的程序员做了一个问卷调查:你都知道哪些java命名规范?最终结果显示:
- 类的首字母要大写,使用驼峰标识
- 变量首字母小写,使用驼峰标识
- 常量字母全部大写,下划线分隔
- 使用英文单词,不要使用拼音
在很多的java程序员看来能做到这些,就已经是很规范的命名方式了,究竟还有哪些不足之处?笔者总结了一下java开发中的最常用的一些命名规范,如果有不足之处,还请各位朋友不吝赐教!如果您觉得本文对您有帮助,期待您能帮忙关注、转发!
一、package命名规范
软件项目的包名称应该是由您的公司的域名的倒序,再加上您的项目的名称,均使用小写字母,不能包含其他符号。可以在最后添加包的版本,如下图实例所示:
org.example.aprojectname
org.example.aprojectname.innerpkg
org.example.aprojectname.innerpkg.anotherpkg
org.example.aprojectname.innerpkg2
org.example.anotherproject
org.example.anotherproject.v2
二、Class命名规范
类名必须是一个 名词,使用驼峰命名方式,首字母应大写,例如HashMap。应该可以从类名中推断出它大概会包含什么样的函数和变量。例如:
class Student{}
class ArrayList{}
class HashMap{}
class ComputerEngineer{}
三、Interface接口
接口名称应尽量使用 形容词。有时也可以是名词,如:List或Map。与类的命名规范一样,使用驼峰命名,首字母应大写。如下:
interface Cloneable{}
interface AutoCloseable{}
interface PreparedStatement{}
interface Engineer{}
- 接口通常代表一类对象的总称。形容词“会跑的”可以是一个接口名称,实现类可以是人、狗、猫。
- 而使用名词需要具有一定的概括性,“爪子”比“猫爪”更像是一个接口的名字。
四、变量
变量尽量是简短而且有意义的名词,遵循驼峰命名,首字母小写。并且不要使用划线('_
')或美元符号'$
'字符。
- 在for循环中使用的计数变量,可以是i,j,k,m和n,它们也常用于整数
- 对于 布尔值,通常开头应该是is或has。
- 可以使用Of串联多个名词
- 可以使用形容词修饰名词
int countOfCustomer; //Of串联
float averageInterest; //形容词修饰名词
long timeInMillisecond, daysInYear; //时间
boolean isEngineer, isCompleted, hasSubmitted; //布尔类型
五、常量
常量也是程序的重要组成部分。也要使用名词,或者形容词修饰的名词。全部字母大写,使用下划线分隔单词。
public static final float PI = 3.14;
static int CREATED_ON_YEAR = 2019;
六、方法
方法名称要使用动词,并且应该从名称中可以推断出方法的功能,尽量简短。使用驼峰标志命名。通常, get
和 set
用于分别获取数据和设置数据。对于布尔值,方法名称应与与变量名称相同。
void print(Object obj);
void remove(Obejct obj);
Object update();
int getCountOfCustomer();//getter
void setCountOfCustomer(int countOfCustomers);//setter
boolean isUserAdmin(User user); //布尔类型
七、泛型
使用单个大写字母, T使用的比较广泛。E通常被用于集合元素,K和V通常被用于映射关系。请勿使用多字符。
public <T> void print(T t);
interface List<E>{}
class HashMap<K, V> {};
喜欢 (1)or分享 (0)
- Gulp 工作流中Sass 增量编译功能的探索
- Sass与Compass——回顾
- 苹果就“降速门”致歉;央行批扫码支付不正当竞争;王健林旗下公司遭集体裁员
- 姚期智教授:量子计算是千亿万亿级别的产业,或成为科技创新的引擎
- Powershell中禁止执行脚本解决办法
- 使用AsyncTask异步更新UI界面及原理分析
- 商家为何要做小程序?
- Android中关于dip和px以及转换的总结
- Python介绍
- python案例-用户登录
- 推荐个找代码示例的VS 插件 All-In-One Code Framework Sample Browser
- 明星推出定制AI形象,虚拟形象有何优势
- apache工作模式梳理
- Mysql的二进制日志binlog的模式说明
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android使用剪切板传递数据
- kotlin anko页面跳转实现方式,携带参数或flag
- 关于android连续点击出现多个Activity界面的解决方法
- Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)
- 解决django 多个APP时 static文件的问题
- Android Studio如何获取SQLite数据并显示到ListView上
- Android自定义短信倒计时view流程分析
- 使用Android studio3.6的java api方式调用opencv
- thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
- php+iframe 实现上传文件功能示例
- php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
- 如何在OpenStack Kolla上部署Tungsten Fabric(附14个常见的配置问题)
- 浮点数的秘密
- 由多线程内存溢出产生的实战分析
- 消失的Java进程-Linux OOM Killer