我刚刚完成了清洁代码,其中一条规则是避免将布尔参数作为功能选择器传递,例如,
而不是这个:
public double calculateWeeklyPay(boolean overtime) {
double pay = calculatePay();
if (overtime) {
return pay *= 1.5;
}
return pay;
}
Run Code Online (Sandbox Code Playgroud)
我们应该这样做,让消费者调用适当的方法:
public double calculateWeeklyPay() {
return calculatePay();
}
public double calculateWeeklyPayWithOvertime() {
double pay = calculateWeeklyPay();
return pay *= 1.5;
}
Run Code Online (Sandbox Code Playgroud)
但是,我应该在更复杂的方法中做什么,分割方法意味着许多重复的代码?
这里应该做什么:
public double calculateWeeklyPay(boolean overtime) {
double pay = calculatePay();
pay = modifyPay1(pay);
pay = modifyPay2(pay)
pay = modifyPay3(pay)
if (overtime) {
pay = pay *= 1.5;
}
pay = modifyPay4(pay);
pay = modifyPay5(pay); …Run Code Online (Sandbox Code Playgroud) 我有一个类,我想在其中使用通用枚举类型,如下所示:
public class PageField<E extends Enum<E>>{
}
Run Code Online (Sandbox Code Playgroud)
看起来我应该能够在该类中拥有一个 getter 方法,然后可以返回一个枚举<E>实例,如下所示:
public E getSelectedValue() {
String value = getValueFromElement(this.id);
return E.valueOf(value);
}
Run Code Online (Sandbox Code Playgroud)
但我不断收到以下错误:
类型参数“T”的推断类型“java.lang.Object”不在其范围内;应该扩展'java.lang.Enum'
我究竟做错了什么?这可能吗?
我有一些类的ArrayList字段只是有时使用。我通常像这样初始化这些字段:
private List<Widget> widgets = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我了解使用重载构造函数来设置初始容量,所以我想知道是否应该这样声明这些字段:
private List<Widget> widgets = new ArrayList<>(0);
Run Code Online (Sandbox Code Playgroud)
困境在于,如果我用 0 初始化列表,那么列表将始终必须重新初始化自己才能添加一项。但是,如果我使用默认构造函数,它的默认容量为 10,那么我可能会有一堆项目(并且可能有很多)正在浪费未使用容量的内存。
我知道你们中的一些人会拒绝询问“多久一次”和“你期待多少项目”,但我真的在寻找“最佳实践”方法。所有事情都相等,是否应该使用有时使用的列表(0)或()在列表上进行初始化?
始终初始化列表是我们部门的政策,因此我可能不会简单地将列表保留为null,此外,这只会回避问题。
我知道我可以将鼠标悬停在元素上并获得工具提示,或者单击该项目以查看当前的结帐,但我经常进行提交,我必须关闭提交窗口以查看分支名称(按顺序验证我在哪个分支.)
我的公司决定分支机构名称; 我不能让它们小到合适.

在上面的例子中,完整的分支名称是"feature/TS-1234-outbound",特别是我需要看到的"TS-1234"部分.
java ×3
arguments ×1
arraylist ×1
capacity ×1
constructor ×1
enums ×1
generics ×1
git ×1
if-statement ×1
methods ×1