关于编程习惯,我有几句话要说

  程序猿最讨厌的三件事:写文档、给代码写注释、看别人的代码。具有美感的代码总是让人赏心悦目,流连中多看几眼。有时候看到别人写的糟糕的代码糟糕的设计,总是忍不住想去美化一下。
  普通的编程规约我相信大家都了解也遵守着,也有些大家容易疏忽的,对于编程要注意的事项我总结了以下几点:

  1. 【编程规约】类中类型的变量不要以is开头,有些框架解析会出现序列化错误
  2. 【编程规约】 枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开
  3. 【编程规约】if/for/while/switch/do 等保留字与左右括号之间都必须加空格,即使只有一行代码也必须使用大括号
正例:
if (flag == true) {
  express1   
} else {
  express2
}
反例:
if(condition){
  express1   
}else{
  express2
}
反例:
if (condition) 
  statements;

尽量少用else, 如果条件不成立而不需要往下执行的情况下,优先判断不成立的情况,比如

if(condition){
    …
    return obj;
}
接着再写else的逻辑
  1. 【编程规约】 单行字符数限制不超过 120 个,超出需要换行,换行时,遵循如下原则:
    1) 换行时相对上一行缩进 4 个空格。
    2) 运算符与下文一起换行。
    3) 方法调用的点符号与下文一起换行。
    4) 在多个参数超长,逗号后进行换行。
    5) 在括号前不要换行,见反例。
正例:
StringBuffer sb = new StringBuffer();
//超过 120 个字符的情况下,换行缩进 4 个空格,并且方法前的点符号一起换行
sb.append("zi").append("xin")…
    .append("huang");

反例:
StringBuffer sb = new StringBuffer();
//超过 120 个字符的情况下,不要在括号前换行
sb.append("zi").append("xin")…append
("huang");
//参数很多的方法调用也超过 120 个字符,逗号后才是换行处
method(args1, args2, args3, ...
    , argsX);
  1. 【编程规约】方法参数在定义和传入时,多个参数逗号后边必须加空格。
正例:下例中实参的"a",后边必须要有一个空格。
method("a", "b", "c");
  1. 【编程规约】不允许使用过时的类或方法
  2. 【编程规约】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁
for (String temp : a) {
   if ("1".equals(temp)) {
     a.remove(temp);
   }
}
  1. 【编程规约】禁止对大段代码进行 try-catch,这是不负责任的表现
  2. 【编程规约】有 try 块放到了事务代码中,catch 异常后,如果需要回滚事务,一定要注意手动回滚事务
  3. 【编程规约】集合里的元素即使 isNotEmpty,取出的数据元素也可能为 null
  4. 【编程规约】创建泛型类实例不要直接new,应考虑使用静态工厂方法,例如
public static <E> List<E> newListInstance() {
   return new ArrayList<E>();
}
  1. 【编程规约】涉及到货币的时候禁止使用float double,应使用BigDecimal,不过要避免使用new BigDecimal(double),当double必须用作BigDecimal的源时,请使用Double.toString(double)转成String,然后使用String构造方法,或使用BigDecimal的静态方法valueOf

  2. 【日志规约】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);
  1. 【日志规约】日志打印推荐使用占位符方式,不推荐使用字符串拼接
log.info("print param1{}, param2{}", param1, param2);
  1. 【SQL规约】如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释
  2. 【SQL规约】不要使用 count(列名)或 count(常量)来替代 count(),count()就是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。
说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行
  1. 【SQL规约】不得使用外键与级联,一切外键概念必须在应用层解决
  2. 【SQL规约】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性
  3. 【SQL规约】禁止使用 * 作为查询的字段列表,需要哪些字段必须明确写明
  4. 【SQL规约】xml 配置中参数注意使用:#{},#param# 不要使用${} 此种方式容易出现 SQL 注入
  5. 【SQL规约】字段禁止创建为enum类型,要插入enum的值,字段必须加引号,不加引号当然是数字,数字就是key,不是value。一般用tinyint代替,在应用层规约。enum是整型这样的错误很容易发生,尤其是php弱类型的,没注意enum类型,就会犯错。
参考了阿里出品的《阿里巴巴java开发手册》,每个人都需要去读一遍

欢迎大家在评论里补充,大家有好的建议我会采纳在21条后面继续加

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

推荐阅读更多精彩内容

  • 阿里巴巴 JAVA 开发手册 1 / 32 Java 开发手册 版本号 制定团队 更新日期 备 注 1.0.0 阿...
    糖宝_阅读 7,478评论 0 5
  • 一、编程规约 (一)命名规约 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反...
    喝咖啡的蚂蚁阅读 1,473评论 0 2
  • 传送门 解读阿里Java开发手册(v1.1.1) - 异常日志 前言 阿里Java开发手册谈不上圣经,但确实是大量...
    kelgon阅读 4,338评论 4 50
  • 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁...
    云A00000阅读 3,572评论 0 0
  • 夜已深,躺在床上安稳舒适,在学校领导和师生的努力下“知敬畏,守规矩,传美德”养成教育活动,启动仪式顺利且圆满,期待...
    王宇歌阅读 230评论 0 3