摘要:
博客已迁移至 自顶向下彻底理解 Java 中的 volatile 关键字 标题 neta 自《计算机网络自顶向下》 思维导图 volatile 在 Java 中被称为轻量级 synchronized。很多并发专家引导用户远离 volatile 变量,因为使用它们要比使用锁更加容易出错。但是如果理解了 阅读全文
摘要:
Retrofit自定义ConverterFactory 有时候我们用Retrofit需要在收到请求后处理response,当然写在RXJava的回调中也是可以的。 但是如果需要处理的耗时比较长UI线程就会卡住,或者需要重复使用这一段处理(例如解密参数)时代码就会很乱。 为了解决这个问题,我们可以自定 阅读全文
摘要:
1. 使类和成员的可访问性最小 好的模块最重要的一点是好的模块会把所有的实现和其他细节隐藏起来,模块之间的通信只通过API。 当设计完一个类的API之后,应该防止散乱的类,接口和成员变量变成API的一部分。 但是让类暴露final域的危害比较小,所以 除了公有静态final域之外,共有类都不应该包含 阅读全文
摘要:
通用程序设计 1.将局部变量作用域最小化 如果过早声明变量,程序员在理解代码的时候可能会记不起来这个变量的初始值了。并且过早声明变量会使作用域变广,可能会在不该被使用的地方被引用。 要把局部变量最小化,最有力的方法就是 在第一次使用它的时候声明它 。 基本上全部局部变量都有初始值,我们需要有初始化所 阅读全文
摘要:
1. 使类和成员的可访问性最小 好的模块最重要的一点是好的模块会把所有的实现和其他细节隐藏起来,模块之间的通信只通过API。 当设计完一个类的API之后,应该防止散乱的类,接口和成员变量变成API的一部分。 但是让类暴露final域的危害比较小,所以 除了公有静态final域之外,共有类都不应该包含 阅读全文
摘要:
对所有对象都通用的方法也一般指的是Object类里的方法,包含equals,hashCode,toString,clone方法。他们都有明确的通用约定,遵循这些约定可以让依赖于这些约定的类正常运作(如HashMap等) 1. equals的约定 首先我们需要知道什么时候要覆盖equals,一些人可能 阅读全文
摘要:
1. 考虑用静态工厂方法代替构造器 1.1 静态工厂的优点 静态工厂就是通过静态方法来代替构造器。相比构造函数,它有几个优势。 构造器没有名称。而静态工厂能指定名称,当一个类有多组构造函数的时候,可以用名称来把他们区分开来。 构造器每次调用都会新建一个对象,而静态工厂可以在每一次调用都返回同一个对象 阅读全文