В украинском политическом дискуре пристуствует тема разделения народа на казаков и свинопасов(гречкосеев). Это все древняя история, еще в Древней Индии были касты воинов и обывателей.
Я как человек современный предпочитаю себя относить к гречкосеям. Мне нужна стабильность и безопасность. Предпочитаю выращивать гречку и любить жинку, чем умирать в бою.
Сегодня на ревью увидел вот такое:
return $this->valid()
? $this->container[$this->position]
: [];
Конечно, это тоже самое, что возвращать NULL. Это неизбежно приведет к обрастанию кода if-ами, но сначала будут мучительные и долгие дебаги со словами “Да откуда ты, бдь здесь взялось?”.
Не делайте так. Бросайте Exception как можно раньше, как только что-то начало идти не так. Не пытайтесь писать код, который переживет прямое попадание из пушки. Делайте код хрупким.
И я понял, что можно придумать еще одну метафору и пусть каждый решит кто он. Казак или гречкосей?
Путь 1. Притворяйся, что все ок, когда земля горит под ногами. Умри, но не сломайся. Путь казака.
public int size(File file) {
if (!file.exists()) {
return 0;
}
return file.length();
}
Путь 2. Зови на помощь как только она понадобилась, спасайся, тебе еще свинок кормить и полоть сорняки. Путь гречкосея.
public int size(File file) {
if (!file.exists()) {
throw new IllegalArgumentException(
"There is no such file; I can't get its length."
);
}
return file.length();
}
Вы знаете какой путь мне нравится больше, предочитаю выжить. А кто ты? Казак или гречкосей? Воин или обыватель?
А вот крутая статья Егора Бугаенко на эту тему.
Кстати, как металлург, я знаю что твердость металла неизбежно связана с увелечинием его хрупкости. Делай хрупкий код и он будет твердый как шабля у казака!