簡體   English   中英

doStuff和返回布爾值是不好的做法嗎?

[英]Is it bad practice to doStuff and return a boolean?

在我正在關注的java課程中,如果鍵還沒有值,我需要為鍵添加一個值,除此之外,如果鍵已被添加或者它們也希望該方法返回true當密鑰已經有值時為false。

HashMap<RegistrationPlate, String> register = new HashMap<RegistrationPlate, String>();
public boolean add(RegistrationPlate plate, String owner) {

    if (register.get(plate) == null) {
        register.put(plate, owner);
        return true;
    }
    return false;
}

我認為有一個返回真值的'add'方法很奇怪,如果這是一個void方法呢?

在Java的util類中,這些方法被廣泛使用。

只需看看類ArrayList,幾乎每個人都知道:

在這個類中有一個名為boolean add(T e) ,並且java中有許多其他類都是這樣工作的。

在我看來,它沒問題,它使測試更容易。 (您可以通過返回值檢查方法是否成功)

為添加這樣的東西返回布爾值可能非常有用。 事實上, put返回舊值,因為它有其用途。

所以你不需要使用get - 或更好的containsKey但是可以這樣做:

public boolean add(RegistrationPlate plate, String owner) {
    String oldValue = register.put(plate, owner);
    return oldValue == null || !owner.equals(oldValue);
}

|| ... || ...有點過頭了。

我認為有一個返回真值的'add'方法很奇怪,如果這是一個void方法呢?

絕對奇怪。 不要將boolean方法視為提問和返回是或否答案的方法。 他們可以做得更多!

看一下Java源代碼,你會發現某些方法的boolean返回類型有多好。 想要向對象添加內容? 它成功了嗎? 在多種情況下, boolean返回類型對於彼此之間進行通信的類/對象/方法是有利的。

看一下Java的ArrayList remove(Object)實現,以獲得提供額外信息的boolean返回類型的一個很好的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM