Представьте метод, который принимает объект в качестве параметра и проверяет с помощью a для каждого цикла, чтобы разрешить некоторые другие значения внутри некоторой коллекции, которые можно найти/отфильтровать в соответствии с переданным в аргумент. Хорошо ли проверять в начале функции нулевой указатель и сразу же возвращать пустую коллекцию или нулевой указатель, или лучше просто оставить проверку нулевого указателя, поскольку для каждого цикла это позаботится, но функции потребуется больше времени для выполнения (из-за целого для каждой итерации). И скажем, что эта коллекция невелика (не так много времени).Проверка нулевого указателя Java для более быстрого выполнения кода
public ArrayList<Foo> find(Bar bar) {
if (bar == null) { // get rid of these part?
return null; //
} //
ArrayList<Foo> foos = new ArrayList<Foo>();
for (Foo f: Foo.values()) {
if (f.someBarCollection.contains(bar)) {
foos.add(f);
}
}
return foos;
}
Я думаю, что это лучше, чтобы проверить на нуль и вернуть мгновенную, если вы знаете, что это пустая трата времени делать какие-либо дальнейшие действия, потому что вы знаете, что они не нужны. Поэтому я предпочитаю семантику за счет более короткого кода, чтобы сделать вещи недвусмысленными.
EDIT: Позвольте мне подробнее остановиться. Результат функции совпадает с OR без нулевой контрольной части. Вопрос в том, должен ли я проверить его в любом случае, только ради лучшего выражения (и немного увеличения производительности, но это не проблема), но код будет длиннее (из-за дополнительной проверки)?
1. верните интерфейс не тип реализации 2. используйте ключевое слово assert 3. верните пустую коллекцию, а не null. Вот так: что если коллекция содержит _null_? –
Мы можем предположить, что коллекция не содержит null. – user2340939
Используйте ключевое слово assert, только если для вызывающего пользователя неверно передать значение null. Если для вызывающего есть допустимое значение null, обрабатывайте его так же, как и вы (за исключением возврата пустой коллекции). –