Недавно у меня случился инсайт. Часто говорят: "бизнес-требования меняются".
Этот тезис используют для обоснования идеи, что код должен быть гибким, чтобы адаптироваться под новые требования.
Нет. Бизнес-требования только добавляются и устаревают. Бизнес-логика меняется в пределах значений констант. Бизнес пробует новые идеи и отключает старый execution flow.
Основной объем работы - исправление ошибок. Мы не переписываем код для другой инфраструктуры, мы исправляем ошибки совместимости. Если надо перенести код с Mysql на Postgres - мы добавляем новый execution flow, вводим его в эксплуатацию, потом отключаем старый.
Нам не нужна гибкость кода - нам нужна возможность его отключить и удалить.
Нам не нужно менять существующий код - нам нужно про него забыть, и освободить регистры для рождения нового.
Отсюда желание использовать final, readonly и т.п.
Этот тезис используют для обоснования идеи, что код должен быть гибким, чтобы адаптироваться под новые требования.
Нет. Бизнес-требования только добавляются и устаревают. Бизнес-логика меняется в пределах значений констант. Бизнес пробует новые идеи и отключает старый execution flow.
Основной объем работы - исправление ошибок. Мы не переписываем код для другой инфраструктуры, мы исправляем ошибки совместимости. Если надо перенести код с Mysql на Postgres - мы добавляем новый execution flow, вводим его в эксплуатацию, потом отключаем старый.
Нам не нужна гибкость кода - нам нужна возможность его отключить и удалить.
Нам не нужно менять существующий код - нам нужно про него забыть, и освободить регистры для рождения нового.
Отсюда желание использовать final, readonly и т.п.