Код для космических кораблей
Недавно наткнулся на адски-сложный код в исходниках кубернейтс. Сложность заключается в огромном количестве ветвлений — сложно понять, что делает код, даже будучи глубоко в контексте.
В шапке прям большими буквами написано — «пожалуйста, не пытайтесь ничего упрощать». Автор рассказывает, что такой код пишут для космических кораблей в NASA — каждый if должен обязательно содержать свой else, чтобы убедиться, что программист предусмотрел вообще все возможные ситуации. Даже те, которые никогда не случатся.
По словам автора, такой «подробный» код легче поддерживать (не вообще, а конкретно в этом месте). Учитывая, что код отвечает за Persistent Volumes, в это хочется поверить.
Почему бы просто не покрыть все тестами на 100% и не переписать понятно и с нуля?
Потому, что код выполняется в средах, где ОЧЕНЬ много одновременных вычислений. Ситуация точно такая же, как с космическим кораблем: единственное место, в котором возможно провести полноценное интеграционное тестирование — это космос. В случае с Persistent Volumes в k8s — это супернагруженные системы, которые хранят наши с вами данные, к примеру вот эту заметку. Или код, который вы писали весь прошлый год.
Стоит ли писать такую лапшу на работе? Нет, не стоит. Нужно ли отступать от правил, когда это требуется для бизнес-задачи? Да, нужно.
Недавно наткнулся на адски-сложный код в исходниках кубернейтс. Сложность заключается в огромном количестве ветвлений — сложно понять, что делает код, даже будучи глубоко в контексте.
В шапке прям большими буквами написано — «пожалуйста, не пытайтесь ничего упрощать». Автор рассказывает, что такой код пишут для космических кораблей в NASA — каждый if должен обязательно содержать свой else, чтобы убедиться, что программист предусмотрел вообще все возможные ситуации. Даже те, которые никогда не случатся.
По словам автора, такой «подробный» код легче поддерживать (не вообще, а конкретно в этом месте). Учитывая, что код отвечает за Persistent Volumes, в это хочется поверить.
Почему бы просто не покрыть все тестами на 100% и не переписать понятно и с нуля?
Потому, что код выполняется в средах, где ОЧЕНЬ много одновременных вычислений. Ситуация точно такая же, как с космическим кораблем: единственное место, в котором возможно провести полноценное интеграционное тестирование — это космос. В случае с Persistent Volumes в k8s — это супернагруженные системы, которые хранят наши с вами данные, к примеру вот эту заметку. Или код, который вы писали весь прошлый год.
Стоит ли писать такую лапшу на работе? Нет, не стоит. Нужно ли отступать от правил, когда это требуется для бизнес-задачи? Да, нужно.