CTO Vetmanager, PHP Developer, Ironman 70.3

Fail Fast - моя метафора

В украинском политическом дискуре пристуствует тема разделения народа на казаков и свинопасов(гречкосеев). Это все древняя история, еще в Древней Индии были касты воинов и обывателей.

Казаки пишут письма турецкому султану

Я как человек современный предпочитаю себя относить к гречкосеям. Мне нужна стабильность и безопасность. Предпочитаю выращивать гречку и любить жинку, чем умирать в бою.

Сегодня на ревью увидел вот такое:

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

Вы знаете какой путь мне нравится больше, предочитаю выжить. А кто ты? Казак или гречкосей? Воин или обыватель?

А вот крутая статья Егора Бугаенко на эту тему.

Кстати, как металлург, я знаю что твердость металла неизбежно связана с увелечинием его хрупкости. Делай хрупкий код и он будет твердый как шабля у казака!