java编码有规范

一、规范存在的意义

应用编码规范对于软件本身和软件开发人员而言尤为重要
(1)好的编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护;
(2)好的编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码;
(3)好的编码规范可以最大限度的提高团队开发的合作效率;
(4)长期的规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维;

二:标识符命名规范

1:标识符的命名力求做到统一、达意和简洁.

(1)统一是指,对于同一个概念,在程序中用同一种表示方法.
比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。
即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。

(2)达意是指,标识符能准确的表达出它所代表的意义.
比如: newSupplier, OrderPaymentGatewayService等;而 supplier1,service2,idtts等则不是好的命名方式。
准确有两成含义,一是正确,而是丰富。
如果给一个代表供应商的变量起名是 order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。

(3)简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长, transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。

2:骆驼法则
Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: SupplierName, addNewContract。

3:英文VS拼音
尽量使用通俗易懂的英文单词,如果不会可以向队友求助,实在不行则使用汉语拼音,避免拼音与英文混用。
比如表示归档,用archive比较好, 用pigeonhole则不好,用guiDang尚可接受。

4:包名
包名全部小写,连续的单词只是简单地连接起来,不使用下划线。

5:类名
类名都以UpperCamelCase风格编写。类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。
测试类的命名以它要测试的类的名称开始,以Test结束。例如,HashTest或HashIntegrationTest。

6:后缀
类名往往用不同的后缀表达额外的意思:
Service 表明这个类是个服务类,里面包含了给其他类提同业务服务的方法。 如:PaymentOrderService
Impl 这个类是一个实现类,而不是接口。 如:PaymentOrderServiceImpl
Inter 这个类是一个接口。 如:LifeCycleInter
Dao 这个类封装了数据访问方法。 如:PaymentOrderDao
Action 直接处理页面请求,管理页面逻辑了类。 如: UpdateOrderListAction
Listener 响应某种事件的类。如: PaymentSuccessListener
Event 这个类代表了某种事件。如: PaymentSuccessEvent
Servlet 一个Servlet。 如:PaymentCallbackServlet
Factory 生成某种对象工厂的类。如: PaymentOrderFactory
Adapter 用来连接某种以前不被支持的对象的类。如: DatabaseLogAdapter
Job 某种按时间运行的任务。如: PaymentOrderCancelJob
Wrapper 这是一个包装类,为了给某个类提供没有的能力 如:。SelectableOrderListWrapper
Bean 这是一个POJO。 如:MenuStateBean

7:方法名
方法名都以lowerCamelCase风格编写,方法名通常是动词或动词短语。
首字母小写,动词在前,动词前缀往往表达特定的含义。
如:createOrder() , deleteOrder() , openConnection() ,findOrdersByStatus()

8:常量
常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。
每个常量都是一个静态final字段。
例如:public static find String ORDER_PAID_EVENT = “ORDER_PAID_EVENT”;

三:其他

1:编码风格,Code Style尽量保持一致。可以设置Code Template

2:实体,service,serviceImpl,DAO,DAO.xml 名称保持一致
可以快速找到对应的类,便于阅读代码。
User.java
UserService.java
UserServiceImpl.java
UserDAO.java
UserDAO.xml

注意:
如果写成UserDao.java和UserDAO.xml,就会出现异常:无法找到对应的sql语句。
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
com.lzz.osmp.dao.UserDao.selectUser

DAO.xml中sql的表名最好跟数据库中表名大小写保持一致。
否则如果mysql设置成大小写敏感的话,就会出现异常。

3:好的方法名称
(1)方法名称可以提现方法的业务逻辑。
例如:
getUser()获取单个用户
getUsers或者getUserList 获取多个用户
(2)方法的首字母小写,其他单词的首字母大写

4:接口尽量可以通用
(1)代码量少
(2)便于维护,如果出现bug或者需求变更,修改尽量少的代码。
(3)扩展性好

5:好的注释
原则:少而精,不宜多而滥,更不能误导。
命名达意,结构清晰的代码,可以不需要注释,或者只需要很少注释,就可以让人读懂;
好的注释,便于阅读代码;
不能正确表达代码意义的注释,只会损害代码的可读性;
注释要和代码同步,过多的注释会成为开发的负担 ;
注释不是用来管理代码版本的,如果有代码不要了,直接删除,svn会有记录的,不要注释掉,否则以后没人知道那段注释掉的代码该不该删除。

6:善用TODO
在代码中加入 //TODO: 让你知道你还有什么事没有做。

7:减少代码的嵌套层次
代码嵌套层次达3层以上时,一般人理解起来都会困难。
减少嵌套的方法有很多:合并条件 ,利用return以省略后面的else,利用子方法。

8:接口加try catch代码块 e.printStackTrace();

9:不随意输出日志
(1)不输出system.out,因为此日志不好管理,而且运行速度比较慢。
(2)log4j五个级别的日志:DEBUG、INFO、WARN、ERROR和FATAL。
这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度.
Log4j有一个规则:只输出级别不低于设定级别的日志信息
假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出.

DEBUG指定细粒度信息事件是最有用的应用程序调试
INFO指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
WARN指定具有潜在危害的情况
ERROR错误事件可能仍然允许应用程序继续运行
FATAL指定非常严重的错误事件,这可能导致应用程序中止

10:尽量多加空判断
如果没有空判断,有些脏数据,就会造成程序空指针异常,页面无法展示。
指定非常严重的错误事件,这可能导致应用程序中止。

PayChannel channel = myAccountService.getPayChannelById(Integer.parseInt(channelId));
if(channel != null){
SplitInfo splitInfo = new SplitInfo();
splitInfo.setAlipayAccount(channel.getPayAccount());
splitInfo.setPayFee(“0.01”);
splitInfo.setCreateTime(new Date());
subAccountService.addSubAccountTradeInfo(splitInfo);
}

11:导包
删除不用的导入。在eclipse下经常使用快捷键 ctrl+shift+o 修正导入
尽量不要使用整个包的导入。例如 import java.util.*

12:缩进
大括号的开始在代码块开始的行尾,闭合在和代码块同一缩进的行首。

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十五楼亮哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值