Java开发注意事项

来源:互联网 发布:淘宝拍图动作 编辑:程序博客网 时间:2024/05/22 14:06

一  规范

(1)命名

 变量:mNumberOfPlayer(number_of_player)

常量:INTEM_IMAGE(intem_image,intemImage)

(2)方法 

命名:采用小驼峰式

注意:

1、严格要求自己写体量小的方法,一个方法在20行左右(getter、setter一行解决),方法过大一定要分拆,比如如多 if-else里面的内容完全可以分别拆出2个单独方法 

2、避免空方法(Methods should not be empty)

如果有特殊原因写了内容为空的方法,一定要有详细的注释说明原因。

3、表达式不应该太复杂(Expressions should not be too complex,maximum allowed 3)

 if(edge == DragEdge.Right && childRight <= getWidth()&& childBottom <= getHeight()&&                childTop >= getPaddingTop()&& childLeft >= getPaddingLeft())

 4、字符串字面值不应重复(String literals should not be duplicated)

HashMapmap =newHashMap();

map.put("ItemImage", R.drawable.wb_icon_myproject);

map.put("ItemImage", R.drawable.wb_icon_myproject2);

修改为:

constant String INTEM_IMAGE="ItemImage";

 map.put(INTEM_IMAGE, R.drawable.wb_icon_myproject2);

二  规避Bug

(1)java.lang.NullPointerException

空指针最为常见,也最容易规避,使用的时候一定要进行null check,采取不信任原则:

方法形参要判空后才使用;

全局变量容易被系统回收或者更改,使用全局变量前建议判空;

第三方接口的调用,对返回值进行判空。

(2)java.util.ConcurrentModificationException

异常示例:java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)

异常代码示例:

mTimer.schedule(newTimerTask() {

        public voidrun() {

                  initEleLocationData();

          }},0,DELAY_TIME_InitData);

mTimer.schedule(newTimerTask() {

 public void  run() {

   if(mEleInfoList!=null) {

           for(HashMap mInfoMap :mEleInfoList) {

                      calculateTime(mInfoMap);}

  }}},0,DELAY_TIME);

[原因分析]:该异常表示迭代器迭代过程中,迭代的对象发生了改变,如数据项增加或删除。

由于迭代对象不是线程安全,在迭代的过程中,会检查modCount是否和初始modCount即expectedModCount一致,如果不一致,则认为数据有变化,迭代终止并抛出异常。常出现的场景是,两个线程同时对集合进行操作,线程1对集合进行遍历,而线程2对集合进行增加、删除操作,此时将会发生ConcurrentModificationException异常。

具体解决方法:多线程访问时要增加同步锁,或者建议使用线程安全的集合:

1. 使用ConcurrentHashMap替换HashMap,CopyOnWriteArrayList替换ArrayList;

2. 或者使用使用Vector替换ArrayList,Vector是线程安全的。Vector的缺点:大量数据操作时,由于线程安全,性能比ArrayList低.

(3)java.lang.IllegalArgumentException: You must pass in a non null


(4)Switch   "switch" statements should end with "default" clauses

持续补充。。。

1 0
原创粉丝点击