Java开发

Posted 毅力技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java开发相关的知识,希望对你有一定的参考价值。

一  规范
(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
————————————————

以上是关于Java开发的主要内容,如果未能解决你的问题,请参考以下文章

java开发工程师一般都做啥开发?

自学 Java开发(Java后台开发|Java后端开发)的书籍推荐

android开发jdk和java开发jdk一样吗

《阿里巴巴Java开发手册》更新为《Java开发手册》

java web开发工具都有哪些

java开发快速搭建java开发环境(在线开发)