The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Вы знаете, что такое NULL, не так ли? Это зло. В ООП ваш метод может возвращать NULL, принимать NULL в качестве аргумента, ваш объект может инкапсулировать его в качестве атрибута или вы можете присвоить его переменной. Все четыре сценария плохи для поддержки вашего кода - в этом нет сомнений. Вопрос в том, что делать вместо этого. Давайте обсудим часть “вернуть его”, и я предложу еще одну “лучшую практику” на основе того, что обсуждалось несколько лет назад.
Integer max(List<Integer> items) {
// Calculate the maximum of all
// items and return it.
}
Что должен делать этот метод, если список пустой? Java’s Collections.max()
выбрасывает исключение. Ruby’s Enumerable.max()
возвращает nil
. PHP’s max()
возвращает FALSE
. Python’s max()
вызывает исключение. C#’s Enumerable.Max()
также выбрасывает исключение. JavaScript’s Math.max()
возвращает NaN
.
Какой вариант правильный, а? Исключение, NULL, false или NaN?
Исключение, если спрашиваете меня.
Но есть еще один подход, который лучше исключения. Вот этот:
Объект “по умолчанию” будет возвращен, если список пустой. Эта функция реализована в функции max()
в Python: можно передать как список, так и элемент по умолчанию, который будет возвращен в случае, если список пустой. Если элемент по умолчанию не указан, будет сгенерировано исключение.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 17:02