Java代码规范

第1章 引言

1.1介绍

本文档以SUN的标准Java代码规范为基础,结合公司的实际需要,做一些修改和补充,编写次文档的目的是规范公司开发代码,增加代码清晰度,减少bug,降低后期维护成本和代码审查,养成代码规范的习惯,便于开发人员自身成长。

第2章 标识符命名

注:所有标识符不能出现中文,尽量使用通俗英文,不可拼音和英文混用。

2.1 包名

全部使用小写字母,单词间不要用字符隔开

正例:com.axj.batchfile

反例:com.axj.batch_file

2.2 类名

2.2.1 类命名

类名使用驼峰命名,每个自然语义的单词首字母大写,其他字母小写

正例:SendThread

反例:sendThread,Sendthread

2.2.2 类后缀

类名不同的后缀代表不同的类型:


2.2.2

2.3方法名

首字母小写,后面自然语义的单词首字母都大写

正例:closeSession

反例:CloseSession,closesession

动词在前,名词在后

正例:closeSession

反例:sessionClose

方法命名格式(方法名要准确表达业务的含义):


2.3

2.4 变量、参数名

变量一定要清楚表达什么意思,一般取一些通俗有意义的名字,尽量使用简短英文单词。

命名规则:

1、首字母小写,后面自然语义的单词首字母都大写

2、只能以字母、“_”或“$”符号作为变量名开头。

3、变量中可包含数字,但不能以数字开头。

4、除了“_”和“$”符号以外,变量中不能包含其他特殊字符。

5、不能用class、int、String、public等java关键字做为变量名。

6、在java中变量名严格区分大小写,例如:name和Name就是两个不同的变量

7、静态变量和枚举类型字母全大写,多个单词之间用”_”分隔,如:TIME_EVENT

第3章代码注释

3.1 注释分类

注:注释主要分为2种,实现注释和文档注释。

3.1.1 实现注释

实现注释使用/*...*/和//界定,使用/*...*/来进行块注释,使用//进行行注释,位于注释代码上一行。

3.1.2文档注释

文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前,javadoc是j2sdk里面一个非常重要的工具,如果你按照规范在Java的源代码里面写好注释的话,那么它就可以生成相应的文档,便于开发者察看,Myeclipse生成步骤,点击菜单栏的Project,选择generate javadoc,下一步即可。

javadoc参数定义:

@author  对类的说明 标明开发该类模块的作者

@version  对类的说明 标明该类模块的版本

@see    对类、属性、方法的说明 参考转向,也就是相关主题

@param    对方法的说明 对方法中某参数的说明

@return  对方法的说明 对方法返回值的说明

@exception  对方法的说明 对方法可能抛出的异常进行说明

3.2 注释条件(必加)

1、类的注释

2、方法的注释

3、在代码复杂处注释

4、代码修改处注释上时间和修改原因

5、全局变量注释

6、在多重嵌套和循环逻辑上注释

7、接口注释

8、调用工具类中方法的注释

3.3 注释举例

3.3.1 类注释

/**

*类功能概述×××××××

*

*@author huwei

*@time 2017-8-20

*/

public class LogicManager {

......

}

3.3.2 方法注释

/**

* 方法说明×××××××

*

  * @param1 参数说明

* @param2 参数说明

  * @return 返回值说明

  * @throws Exception

  */

public boolean executeLogic(int param1, int param2)throws Exception{

......

return true;

}

3.3.3 全局变量、字段、属性注释

public class ReadManager {

  /** 全局的计数变量*/

  private final int count;

  /** 字段/属性*/

  private String name;

}

3.3.4 代码域注释

            /*----------开始:解析数据库数据 ------- */

            //\1拆分数据库数据

            String Row[] = sStr.split("\1");

waitRecord = new WaitRecord[Row.length];

            /* 循环存储对象到List */

for (int i = 0; i < Row.length; i++) {

String Col[] = Row[i].split("\2");

waitRecord[i] = new WaitRecord();

waitRecord[i].waitId = Col[0];

waitRecord[i].userId = Col[1];

waitRecord[i].username = Col[2];

waitRecord[i].longId = Col[3];

                waitList.add(waitRecord[i]);

}

              /*----------结束:解析数据库数据 ------- */

第五章代码习惯

5.1 异常抛出

进程和线程可能出现一系列异常,异常的出现如果没有抛出可能会导致进程死掉或线程崩溃,所以需养成异常捕获抛出的习惯,避免应用因进程卡住,异常异常捕获后,需打印异常日志,否则出现异常时不好查找问题。

5.2 减少嵌套

代码嵌套层太多,会严重影响代码可读性,处理方法:

1、使用return跳出,减少else使用

2、条件使用逻辑运算符(&& 或 ||等)进行拼接

3、整合成子方法

5.3 判断字符串相等

1、java中字符串的比较是==比较引用,equals 比较值

我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题

例子1:String a="abc";String b="abc",

那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存

一份,所以a和b指向的是同一个对象;

例子2:String a=new String("abc"); String b=new String("abc");

那么a==b将返回false,此时a和b指向不同的对象。

2、用equals方法比较的是字符串的内容是否相同

example:String a=new String("abc"); String b=new String("abc"); a.equals(b);将返回true。

通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法,具体的原因得引出常量池概念,这里不做详细描述

5.4 字符串拼接

拼接字符串尽量使用StringBuffer或者StringBuilder,使用”+”号每次会new一个对象,对空间和性能还是有一定影响的。

5.5 NPE处理

在java开发最常见的异常就是NPE(java.lang.NullPointerException)异常,需有效的规避异常,进行null判断,可能出现null模块,取集合元素,数据截取,方法返回,socket传输的数据,数据库取值等等...

5.6 日志输出

平时调试代码或输出日志习惯使用System.out.println(),system.out都写入到一个文件里去了,对一个文件的读写就会排队写,而且syso在当前线程,必须写完才继续下面的程序。 如果使用log工具,你的日志会发散在多个日志文件上。可以控制日志是否输出,而且log工具只是通知要写日志,而不必等日志写完。

————————————————

原文链接:https://blog.csdn.net/u013050593/java/article/details/77750807

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容