那些崩溃又可笑的代码命名...
本文旨在用通俗的语言讲述枯燥的知识
1
到一家创业公司上班的第一天,老员工刘XX给我看了公司他负责的项目,奇怪的是,命名是“LiuQXProject”,刘XX看着惊愕的我说:“怎么了?有什么错吗?”
2
给同事做双十一活动相关代码的review,学到到了很多中英混血单词,获取双十一拼团活动数据的接口叫做“get_ShuangShiYi_GroupTuan_activity_data”,特等奖的命名:TeDeng_price….更气人的是,我们活动奖等有十级,他就虔诚地继续OneDeng_price直到JiuDeng_price。。。
噢,no!!好气啊!!而且他还把”奖“的单词prize写成了price,
怎么说呢?好难受..
3
公司来了个刚毕业的小伙子,自诩前端未来之星,喜欢研读源码,对开源充满热爱,一个月后,无意间打开他写的一个js文件,让我惊讶的是:变量从a到z全部用完,更气人的是,26个字母用完之后,他竟然丧心病狂的用起来了双拼,var aa=1,var ab=“12”,var ac=null…我问他为什么这样命名,他说你没研读jQuery源码吗?人家就是这样做的,简洁大气上档次!
4
因为微信昵称经常有带有一些乱七八糟的表情或者字符,在正常情况下utf-8编码的数据库是存不进去的,因此让同事帮忙写个把微信昵称转换成正常的字符串的一个工具函数,最终我拿到了这个工具函数,名字叫做:convertingWechatNicknameintoNormalCharacters(String nickName)
5
实习小伙子来的头一天就搞的满身大汗,我说怎么了,他说我明明写了main方法,为什么运行不了,我一看代码,我噻~main写成了mian,怎么可能跑得起来啊!更残暴的是:
苹果手机是apple_sj,Android手机是android_sj,哈哈~
以上的种种让人哭笑不得的命名问题..相信很多小伙伴也会碰过这样,有些是因为经验不足,有些是因为一直没有对自己写的代码做一些规范化的工作,有的是因为被老项目、前辈带出来的坏习惯…这些都是编程世界里非常不好的行为,拒不完全统计:在一个项目中,程序员80%的时间都是在和变量、函数、方法打交道,因此一个好的命名习惯,比注释或一份详细的开发文档都重要。针对于此,小编特意根据行业标准---阿里开发文档,做了一些参考和摘抄,整理出一份关于命名方面的规范,给需要的你作参考。
争取多写漂亮代码,少写注释!!!
文章提纲:
整体规范
包规范
类规范
方法规范
OOP的一些强制规范
1. 整体规范
所有的命名必须以英文意译,不能以中文拼音意译,如:获取我的消息接口,可以写:myMessage;但不能写:myXiaoXi
尽量用精简的英文命名,但要完整表达其意义,杜绝int a ,int a1 int aa这种毫无意义的简化写法。
所有命名不能以特殊符号开始,如:_age,_username
常量用全大写定义,单词之间用下划线分割语义,如:public final int REDIS_MAX_IDLE=5;
2. 包规范
包名全小写,不能用特殊符号或者驼峰写法如:com.courseLog.uitl_con是不合规范的。
包名要符合包的作用,比如数据层要写dao,工具包要写util等
3. 类规范
类名风格为大写开头的驼峰命名方式,如:ApiController、TestController等
异常类命名使用Exception结尾,如:CustomerException
抽象类命名使用Abstract开头,如:AbstractCustomer
测试类命名以它要测试的类的名称开始,以 Test 结尾,如:CustomerControllerTest
枚举类命名要以Enum结尾,如果CustomerRoleEnum
其它类型的类命名,在描述类作用的同时,也尽可能表达出类所用的一些设计模式
4. 方法规范
方法名使用驼峰写法,以小写字母开头,如:getUserCourse();
方法内的参数名、成员变量、局部变量均使用驼峰写法,以小写字母开头,如:int userName;
接口类的方法和属性不要加上任何修饰符,保证代码的简介。
方法定义必须要有注释,包括(方法作用、参数名、返回类型、创建时间等)
Service/DAO层方法命名规约:
1) 获取单个对象的方法用get做前缀。
2) 获取多个对象的方法用list做前缀。
3) 获取统计值的方法用count做前缀。
4) 插入的方法用save/insert做前缀。
5) 删除的方法用remove/delete做前缀。
6) 修改的方法用update做前缀。
5. OOP的一些强制规范
尽量避免使用可变参数编程,相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object
接口过时必须加@Deprecated 注解
不能使用过时的类或方法
所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较
类内方法定义顺序依次是:公有方法或保护方法 > 私有方法 > getter/setter 方法。
点击「阅读原文」获取面试题大全~