Java 是否值得创建另一种方法来简化重复的方法?

Java 是否值得创建另一种方法来简化重复的方法?,java,Java,我的代码中有几个相同的公共方法: public boolean modifyLastName(int nth, String lastName) { if (!isNthValid(nth)) { return false; } if (lastName.length() == 0) { return false; } int count = 0; for (int i = 0; i < book.len

我的代码中有几个相同的公共方法:

public boolean modifyLastName(int nth, String lastName) {

    if (!isNthValid(nth)) {
        return false;
    }

    if (lastName.length() == 0) {
        return false;
    }

    int count = 0;
    for (int i = 0; i < book.length; i++) {
        if (book[i] != null) {
            count++;

            if (count == nth) {
                book[i].setLastName(lastName);
                return true;
            }
        }
    }

    return false;
}
public boolean modifyLastName(int-nth,String-lastName){
如果(!isNthValid(n)){
返回false;
}
if(lastName.length()==0){
返回false;
}
整数计数=0;
for(int i=0;i
除了带有“modifyLastName”的明显标题之外,我的4个方法都是相同的,除了
setLastName(lastName)
不同的
setTitle(title)
setDate(date)


我正在考虑实施一种新方法来将信息传递到中,但我看不出这有助于减少代码,同时也确保将来我可以在需要时更新一个方法,并处理好所有问题。

您可以这样做,这意味着您无需重复图书查找代码:(如果数组中没有空值,这会简单得多。是否应该改用列表?)

public boolean modifyLastName(int-nth,String-lastName){
返回updateBook(n,b->b.setLastName(lastName),lastName.length()!=0);
}
私有布尔更新电子书(int-nth,使用者操作,布尔有效){
如果(!isNthValid(n)){
返回false;
}
如果(!有效){
返回false;
}
整数计数=0;
for(int i=0;i
您可以这样做,这意味着您不需要重复图书查找代码:(如果数组中没有空值,这会简单得多。您应该使用列表吗?)

public boolean modifyLastName(int-nth,String-lastName){
返回updateBook(n,b->b.setLastName(lastName),lastName.length()!=0);
}
私有布尔更新电子书(int-nth,使用者操作,布尔有效){
如果(!isNthValid(n)){
返回false;
}
如果(!有效){
返回false;
}
整数计数=0;
for(int i=0;i
我们无法告诉您是否“值得”。这是一个意见问题……并且高度依赖于上下文。我们无法告诉您是否“值得”.这是一个观点问题…并且高度依赖于上下文。谢谢。我不知道消费者界面。我做了一些研究,学到了一些新东西。谢谢。我不知道消费者界面。我做了一些研究,学到了一些新东西。
    public boolean modifyLastName(int nth, String lastName) {
        return updateBook(nth, b -> b.setLastName(lastName), lastName.length() != 0);
    }
    
    private boolean updateBook(int nth, Consumer<Book> operation, boolean valid) {
        if (!isNthValid(nth)) {
            return false;
        }

        if (!valid) {
            return false;
        }

        int count = 0;
        for (int i = 0; i < book.length; i++) {
            if (book[i] != null) {
                count++;

                if (count == nth) {
                    operation.accept(book[i]);
                    return true;
                }
            }
        }

        return false;
    }