美文网首页
关于编程习惯,我有几句话要说

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

作者: 木山峰 | 来源:发表于2019-04-19 23:20 被阅读0次

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

  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条后面继续加

相关文章

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

      程序猿最讨厌的三件事:写文档、给代码写注释、看别人的代码。具有美感的代码总是让人赏心悦目,流连中多看几眼。有时...

  • 关于平台投稿,有几句话要说

    很多简友给我私信,问我去哪个平台投稿。 我真的真的不知道,你们写的稿子去哪投稿。 每个人写稿风格不一样,根本没办法...

  • 关于“习惯”,我有话要说

    文 | 周大渔 我一直觉得,真正能够改变一个人命运的不是其他,正是“习惯”。因为只有落实到“习惯”,才能说是落地了...

  • 我要说几句话

    这几天,凡是玩微信的,想必都知道,那个最先呐喊的平凡医生,在为人救死扶伤时倒下了,再也没有能站起来。对于他在救人时...

  • 关于圣诞要说的几句话

    天气越来越冷,北风不停地呼啸着。转眼间一年又要结束了,一进12月,大家最先想到的应该就是圣诞节了吧。的确,人...

  • 你会读书吗?

    关于读书,有几句话要说。如你不喜,烦请包涵。 读书是一件自由的事情,每人读书都有自己的经验与体悟,恰好我自己也读过...

  • 关于工作,我有几点要说。

    今天和两个同事一起去。那个什么地方?奉贤的奉浦大道,上海交通大学科技园里面,不蓝牙网关。 嗯去公司来了南阳市宛关的...

  • 关于旅行,我有几点要说

    最近这几年流行旅行,不是旅游,要是你对你那个满口说着要去旅行的朋友说成了旅游,那人非得跟你急。曾经我就是那样的少年...

  • 减重40斤,有几句话我要说!

    细细算来,从决心减重到现在,足足减了有40斤了。 昨天秤了一下,体重头一次和G先生会师。 先生的自律使得他的体重几...

  • 儿子,我还是要说几句话

    春节的来临,让我们有了团聚的机会,有了一家人在起闲吹,闲扯,或者是表达爱最近的方式。因为家我们走在一起,因为你们我...

网友评论

      本文标题:关于编程习惯,我有几句话要说

      本文链接:https://www.haomeiwen.com/subject/tyjcgqtx.html