java后端开发如何提升代码质量

写了很多年的代码了,突然有新人会问你这个问题,如何提升代码质量?这也不是一下子就能说得明白,或者能立马上手。关键还是在于多读多写,熟能生巧,实话,实话,实话!!!
下面就说下日常中使用的一些开发技巧:

  1. 当构造方法参数过多时使用 builder 模式
import java.util.Objects;

public class NyPizza extends Pizza {
	public enum Size { SMALL, MEDIUM, LARGE }
	private final Size size;
	public static class Builder extends Pizza.Builder<Builder> {
	private final Size size;
	public Builder(Size size) {
		this.size = Objects.requireNonNull(size);
	}
	@Override 
	public NyPizza build() {
		return new NyPizza(this);
	}
	@Override 
	protected Builder self() {
		return this;
	}
}
	private NyPizza(Builder builder) {
		super(builder);
		size = builder.size;
	}
}
public class Calzone extends Pizza {
	private final boolean sauceInside;
	public static class Builder extends Pizza.Builder<Builder> {
	private boolean sauceInside = false; // Default
	public Builder sauceInside() {
		sauceInside = true;
		return this;
		}
		@Override public Calzone build() {
			return new Calzone(this);
		}
		@Override protected Builder self() {
			return this;
		}
	}
	private Calzone(Builder builder) {
		super(builder);
		sauceInside = builder.sauceInside;
	}
}

NyPizza pizza = new NyPizza.Builder(SMALL)
.addTopping(SAUSAGE).addTopping(ONION).build();
Calzone calzone = new Calzone.Builder()
.addTopping(HAM).sauceInside().build();
  1. 使用 try-with-resources 语句替代 try-finally语句
    Java 类库中包含许多必须通过调用 close 方法手动关闭的资源。 比如 InputStream , OutputStream 和
    java.sql.Connection 。
// try-finally - No longer the best way to close resources!
static String firstLineOfFile(String path) throws IOException {
	BufferedReader br = new BufferedReader(new FileReader(path));
	try {
		return br.readLine();
	} finally {
		br.close();
	}
}

当 Java 7 引入了 try-with-resources 语句时,所有这些问题一下子都得到了解决。要使用这个构造,
资源必须实现 AutoCloseable 接口,该接口由一个返回为 void 的 close 组成。Java 类库和第三方类库中的
许多类和接口现在都实现或继承了 AutoCloseable 接口。如果你编写的类表示必须关闭的资源,那么这个类也应
该实现 AutoCloseable 接口。

static String firstLineOfFile(String path) throws IOException {
	try (BufferedReader br = new BufferedReader(
		new FileReader(path))) {
		return br.readLine();
	}
}
  1. 接口优于抽象类
  2. 列表优于数组
  3. 消除非检查警告
    如果你不能消除警告,但你可以证明引发警告的代码是类型安全的,那么(并且只能这样)用
    @SuppressWarnings(“unchecked”) 注解来抑制警告。

后续继续补充…

你可能感兴趣的:(java,开发语言)