Java开发注意事项
2017-04-21 13:39
405 查看
一 规范
(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 Eclipse开发环境搭建及注意事项
- 阿里云Centos7.2搭建java开发环境 jdk tomcat mysql注意事项
- java项目开发注意事项
- Java开发注意事项
- 开发能支持多种JVM的java程序应注意的事项
- Java开发注意事项
- 关于Android的JNI开发SO库调java接口函数注意事项
- java之数据包装类和封装类于开发中的注意事项
- java开发注意事项
- 配置Java开发环境的时候注意事项【做个笔记给自己提醒而已】
- C#转java开发注意事项
- [Java Web – 3A] – Spring MVC开发注意事项
- 编写跨平台Java程序注意事项-Java基础-Java-编程开发
- Java环境下AO开发之环境部署及注意事项(eclipse平台)
- java websocket的开发案例与注意事项
- 开发web应用,在DOC下编译java文件注意事项
- MapXtreme for Java 4.5 开发注意事项
- Java 开发中的那些注意事项