Agile Java

1. 代码就是设计

 

2. 查看Path
    Windows: path
    Unix: echo $PATH

 

3. 查看具体变量
    Windows: echo %JAVA_HOME%
    Unix: echo $JAVA_HOME

 

4. 断言: 第一个参数等于第二个参数

 

5. 保证系统中没有重复的代码

 

6. 不要把成员变量直接暴露给其他对象

 

7. 用类常量替换字符串或者数字

 

8. 消除所有的警告

 

9. 时刻保持代码干净

 

10. 用更有表现力的代码替代注释

 

11. 一个类是单职责

 

12. 用编译器来重构代码

 

13. 以较小的步伐,增量构件系统的测试和代码。如果发现问题,放弃导致问题的增量代码,以更小的步伐重新开始

 

14. 工具方法一般设置为static

    Collections.sort(list): 该list必须实现Comparable接口

 

15. 使用接口提供抽象层,有助于消除重复

    设计系统,通过扩展来拥抱变化,不要通过修改来适应变化

List<Grade> grades = new ArrayList<Grade>(); 定义为List接口,容易扩展

 

    面向对象的集合类优于数组

Arrays.equals(a, b) 比较两个数组的内容,而不是内存位置

     

    返回分隔符解析之后的List

private List<String> split(String fullName) {
    return new ArrayList<String>(Arrays.asList(fullName.split(" ")));
}
或者
private List<String> split(String fullName) {
    List<String> results = new ArrayList<String>();
    for (String name : fullName.split(" "))
        results.add(name);
    return results;
}

 

16. 避免传递异常,但也不要创建空catch块

    不要在finally块中调用return语句,这样可能会吃掉catch抛出的异常

 

17. Object中的equals比较引用 - 比较接收者和参数对象的内存位置
    如果子类没有提供equals实现,那么使用缺省的比较内存位置的equals实现

// 改写equals和hashCode
public boolean equals(Object object) {
    if (object == null)
        return false;
    if (this.getClass() != object.getClass())
        return false;
    Course that = (Course) object;
    return this.department.equals(that.department) && this.number.equals(that.number);
}

// 哈希值运算通常用质数
public int hashCode() {
    final int hashMultiplier = 41;
    int result = 7;
    result = result * hashMultiplier + department.hashCode();
    result = result * hashMultiplier + number.hashCode();
    return result;
}

 

18. I/O
    Reader/Writer: 字符流,处理文本类型
    Input/Output: 字节流,处理图像或者字节码
    InputStreamReader: 将读入的字节装换成字符
    OutputStreamWriter: 将字符转换为单字节

 

19. 序列化

Class Session implements java.io.Serializable {
    private transient List<Student> students = new ArrayList<Student>(); //瞬时对象
}

 

    如果序列化之后再改动Class,再次存入文件,将会出现异常,建议:
    19.1 将序列化的使用最小化
    19.2 尽可能使用transient的成员变量
    19.3 使用serialVersionUID

 

20. 内部类

    静态内部类(static nested): 不能调用外部类的实例变量
    内部类(inner): 可以访问外部类的实例变量
    匿名内部类: 没有构造函数,但可以用实例初始化段来替代

 

21. 打开断言: java -ea MainClass

 

22. Jar工具

    创建Jar: jar cvf sis.jar *
    c-create  v-verbose  f-filename

    解压Jar: jar xvf sis.jar

    加入MANIFEST.MF: jar cvmf main.mf sis.jar *

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值