一会显示通过通讯录添加,一会显示通过搜索手机号添加,同一个人,已经word怎么加上标了,没有删过,来源总是变动?

针对附录中的阿里编码规范,直接指定标题位置,或列出相应规范内容,与其说是编码规范,不如说是新手防坑指南,菜鸟们很值得一看。
一编码规范
(一)命名规约
6.【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类的名称开始,以 Test 结尾。
7.【强制】中括号是数组类型的一部分,数组定义如下:String[]
    个人理解:禁止使用String args[]。同时数组创建又分为动态创建和静态创建,
    静态:int intArray [] = {30,31,32};
    动态:int[] intArray = new int[3];
  动态数组能够在实际应用中改变长度,arrayList就是一个复杂的动态数组。静态不能改变长度。
8.【强制】POJO 类中布尔类型的变量,都不要加 is.
    个人理解:容易造成某些框架的或关键字的识别混乱。
12. 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加)
    个人理解:因为接口中的方法等一定要被实现,所以除了public都没什么意义。既然只能加public那就直接省略了,将其默认为public
13.【强制】很多人对实现类命名时使用的时imp。这里建议使用impl,就是为了统一标准。统一的命名规范能够更好的利用通配符,例如调包时.test.*.impl。
13.【参考】方法命名规则。统一方面命名规则后能够直接通过方面名就知道方法的大概通途。如:查询单个对象用get。
(二)常量定义
1. 【强制】不允许出现任何魔法值(即未经定义的常量)直接出现在代码中。反例: String key="Id#taobao_"+tradeId;
    个人理解:解决硬编码问题。方便后期维护及全家利用。
3. 【推荐】不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。
5. 【推荐】如果变量值仅在一个范围内变化用 Enum 类。
正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}
(三)格式规约
5. 【强制】缩进采用 4 个空格,禁止使用 tab 字符。
6. 【强制】单行字符数限制不超过 120 个,
7. 【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。
10. 【推荐】不同业务逻辑和语义之间要插入一行(仅一行)空行。
(四)OOP规约
3. 【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,
8. 【强制】关于基本数据类型与包装数据类型的使用标准如下: 1) 所有的 POJO 类属性必须使用包装数据类型。 2) RPC 方法的返回值和参数必须使用包装数据类型。 3) 所有的局部变量【推荐】使用基本数据类型。
  个人理解(1)和(2)中使用基本类型时,初始化或返回值为null时会默认为0,如果0有特殊含义将会造成不必要的异常。对于(3)中的理解。局部变量随着方法的存在而调用,随着方法的销毁而销    毁。如果是封装类型,当我们多次调用这个方法时,就会创建很多次封装类型的变量,如果用基本类型则会避免。
9. 【强制】定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。
  个人理解:更新操作的时候可能产生错误数据,例如时间字段。
17. 【推荐】循环体内,字符串的联接方式,使用 StringBuilder 的 append 方法进行扩展。
  个人理解:减少new String的次数,节省内存
(五)集合处理规则
1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则:
  1) 只要重写 equals,就必须重写 hashCode。 2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的 对象必须重写这两个方法。 3) 如果自定义对象做为      Map 的键,那么必须重写 hashCode 和 equals。
  个人理解:避免equals相等时,hashCode不相等。equals()相等的两个对象,hashcode()一定相等;equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。
2. 【强制】ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException 异常:
  个人理解:subList后只是在原ArrayList基础上拿我想要的部分。对原集合和subList视图集合操作时会相互影响。
8.【强制】在JDK7版本以上,Comparator要满足自反性,传递性,对称性。
  个人理解:特别注意相等情况下胡处理。
10. 【推荐】使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历。
  个人理解:个人感觉要根据实际情况,例如有些时候我们只需要key,当key-value都取出后要进一步处理,如果集合足够小,遍历时不是很吃内存等。可以考虑使用keyset。
(五)并发处理
  并发部分知识理解的不好,留以后再写
(七)控制语句
3. 【推荐】推荐尽量少用 else ,推荐使用卫语句或状态设计模式。
  个人理解:卫语句就是把特色情况分别做特殊判断,减少判断的嵌套层数。状态设计模式就是把各种状态封装成类。该不同状态的类对操作接口静态方法的做不同实现。这样就可以根据状态进行不同操作了。参见
(八)注释
7. 【推荐】代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑等的修改。
  个人理解:日后维护会以此为参照,避免产生错误。
11. 【参考】特殊注释标记,请注明标记人与标记时间。
  1 ) 待办事宜 (TODO)
  2 ) 错误,不能工作 (FIXME)&
(九)其他
4. 【强制】注意 Math . random() 这个方法返回是 double 类型,注意取值的范围 0≤ x &1 ( 能够取到零值,注意除零异常 ) ,如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法。  个人理解:Random.nextInt效率更高
二、异常日志&( ( 一) )
异常处理1. 【强制】不要捕获 Java 类库中定义的继承自 RuntimeException 的运行时异常类
  个人理解:运行时异常是编程错误,一般是编程逻辑错误引起的,应该从编程角度尽量避免次类异常的产生。
1. 【强制】应用中不可直接使用日志系统 (Log 4 j 、 Logback) 中的 API ,而应依赖使用日志框架SLF 4 J 中的 API
  个人理解:找到一个关于这方面解读的博客,直接将总结部分粘来了
在你的开源或内部类库中使用SLF4J会使得它独立于任何一个特定的日志实现,这意味着不需要管理多个日志配置或者多个日志类库,你的客户端会很感激这点。
SLF4J提供了基于占位符的日志方法,这通过去除检查isDebugEnabled(), isInfoEnabled()等等,提高了代码可读性。
通过使用SLF4J的日志方法,你可以延迟构建日志信息(Srting)的开销,直到你真正需要,这对于内存和CPU都是高效的。
作为附注,更少的暂时的字符串意味着垃圾回收器(Garbage Collector)需要做更好的工作,这意味着你的应用程序有为更好的吞吐量和能。
(未完待续)
阅读(...) 评论()主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
80后,IT宅男,全栈工程师。
CSDN内容运营,关注前端开发、用户体验技术领域,希望携手更多技术专家,共同推进两大领域的向前发展。研发心得、项目实战、前沿技术……,只要是技术干货,十分欢迎您投稿至chenqg#csdn.net。人人都是主编,这里就是你的舞台。曾负责CSDN知识库产品内容运营,致力于为大家提供精华、专业的内容服务。}

我要回帖

更多关于 加上 英文 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信