2015-08-06 2 views
4

В курсе java, который я выполняю прямо сейчас, мне нужно добавить значение к ключу, если ключ еще не имеет значения, кроме того, что они также хотят, чтобы метод возвращал true, если ключ был добавлено или false, когда ключ уже имеет значение.Неплохая практика doStuff и возврат булевых?

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; 
} 

Я думаю, что странно иметь метод «добавить», который возвращает значения истинности, если бы это было методом пустоты?

+1

Совсем не странно! Это обычная практика для успешного выполнения вашего метода. Таким образом, вы можете сделать что-то вроде 'result = add (x, x)' и проверить 'result' перед продолжением. Если вы работали над тем, что это сработало, это может сломать еще больше кода. – xHocquet

+1

Я думаю, что это очень плохая привычка использовать 'void'. 'void' ничего не значит, это не способствует. возвращение чего-то хорошее, поскольку оно предоставляет информацию бесплатно. когда вы пытаетесь вернуть «void», подумайте о том, какую информацию вы можете предоставить в возвращаемом значении. – HuStmpHrrr

+1

совершенно нормально .for например java 'createFile()' return 'true', если успешно создано else return' false' –

ответ

2

В классах использования Java эти методы широко используются.

Просто увидеть класс ArrayList, который почти все знают:

В этом классе есть метод, называемый boolean add(T e), и есть много других классов в Java, которые работают так.

На мой взгляд, это нормально, и это упрощает тестирование. (вы можете проверить, был ли метод успешным по возвращаемому значению)

0

Возвращение логического значения для такой вещи, как добавление, может быть весьма полезным. Фактически put возвращает старое значение, так как оно использует его.

Так что вам не нужно использовать get - или лучше containsKey но можно сделать:

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

|| ... немного преувеличена.

0

Я думаю, что странно иметь метод «добавить», который возвращает значения истинности, если бы это было методом пустоты?

Определенно не странно. Не думайте о методах boolean как о способе задать вопрос и ответить «да» или «нет». Они могут сделать гораздо больше!

Взгляните на исходный код Java, и вы поймете, насколько хорошо, что для некоторых методов должно быть boolean типа возврата. Хотите что-то добавить к объекту? Было ли это успешным? Существует несколько обстоятельств, когда типы boolean являются предпочтительными для классов/объектов/методов, взаимодействующих между собой.

Посмотрите на Java ArrayList remove(Object) implementation для отличного примера возвращаемых типов boolean, предоставляющих дополнительную информацию.

Смежные вопросы