也做程序员一年多的时间了,虽然项目没有做的特别多,但是接手的每个项目都是从零开始的,从其中也学到了蛮多的,记录一下,希望将来可以少走弯路。
一、对于参数的验证
一般情况下,我对于参数的验证大都在需要用到某一个参数的地方才会对这个参数进行验证,但是在很多情况下这样会出现很多问题,比如:
public class CodeSpecification {
@Autowired
Strategy strategy;
public void codeSpecificationTestMethod(ActivityLog activityLog){
try{
if(activityLog == null){
throw new Exception("参数为空!");
}
//调用了某个方法
strategy.getResult();
if(StringUtils.isEmpty(activityLog.getName())){
throw new Exception("name为空!");
}
this.getIdByName(activityLog.getName());
}catch (Exception e){
e.printStackTrace();
}
}
private void getIdByName(String name){
System.out.println(name);
}
}
这种情况下如果我们把判断name的语句提前的话,就不会再name为空的情况下还会执行strategy.getResult()方法了。
二、函数返回对象的判空
这是一个非常常见的问题,但是在我刚刚开始开发时却完全没有引起重视的问题,但我们调用一个方法返回了一个对象,千万不要去直接获取对象属性,先给对象判空以后再对对象进行操作,一般情况下,空指针异常都是在这种地方发生的,当然,我相信绝大部分人都知道这个问题,但是还是要注意,因为我每个项目调试时,总会发现自己因为粗心大意会漏掉一些对象。
三、使用枚举Enum
当程序中存在很多状态时,我觉着可以适当的使用枚举
枚举的定义方式
public enum StatusEnum {
CLOSE(0, "关闭"),
OPEN(1, "正常"),
;
// 定义私有变量
private int code; // *注:数据库限制20个字段
private String name;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 构造函数,枚举类型只能为私有
StatusEnum (int _code, String _name) {
this.code = _code;
this.name = _name;
}
@Override
public String toString() {
return String.valueOf(this.code);
}
public static StatusEnum valueOfString(int value) {
switch (value) {
case 0:
return CLOSE;
case 1:
return OPEN;
default:
return null;
}
}
}
使用方法举例:
获取枚举的code:StatusEnum.CLOSE.getCode()
通过枚举的code获取枚举的name:StatusEnum.valueOfString(code)
未完待续~
ps:内容比较基础,之后会努力总结,看到的朋友如果在开发中遇到过什么坑,觉着需要注意的可以给小弟提前打个预防针哦,哈哈哈哈哈哈哈感激不尽~