小编Lim*_*awk的帖子

如何避免在Java中使用方法选择器参数(标志/布尔参数)

我刚刚完成了清洁代码,其中一条规则是避免将布尔参数作为功能选择器传递,例如,

而不是这个:

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)

java methods arguments if-statement

4
推荐指数
1
解决办法
741
查看次数

如何在 Java 中使用泛型枚举类型从类返回枚举

我有一个类,我想在其中使用通用枚举类型,如下所示:

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'

我究竟做错了什么?这可能吗?

java generics enums

4
推荐指数
1
解决办法
6297
查看次数

设置不总是使用的 ArrayList 的初始容量的最佳做法是什么?

我有一些类的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,此外,这只会回避问题。

java constructor arraylist capacity

3
推荐指数
1
解决办法
1992
查看次数

有没有办法修改IntelliJ状态栏中的元素宽度(尤其是当前的git分支)

我知道我可以将鼠标悬停在元素上并获得工具提示,或者单击该项目以查看当前的结帐,但我经常进行提交,我必须关闭提交窗口以查看分支名称(按顺序验证我在哪个分支.)

我的公司决定分支机构名称; 我不能让它们小到合适.

在此输入图像描述

在上面的例子中,完整的分支名称是"feature/TS-1234-outbound",特别是我需要看到的"TS-1234"部分.

git intellij-idea

3
推荐指数
1
解决办法
199
查看次数