Качественное программирование (robustness)
Наткнулись на старенькую статью старенького дяденьки Бишопа. Того самого профессора в UC Davis, который написал самую важную книгу по теоретической безопасности (толщиной всего-то в 1383 страницы). Статья небольшая и сугубо практическая, нацеленная на прокачку скилла robusntess.
На примере реализации очереди показано, что может поломаться, и как писать код, устойчивый против этих поломок. В несколько утрированно-параноидальном примере Бишопа куча проверок, но, как нам кажется, часть из этих проверок должна переехать с уровня кода на уровень архитектуры. Иначе каждый класс, каждая подсистема будут обречены строить свои системы контроля целостности. И эти системы будут либо неполны по числу проверок, либо раздуты по объему кода (либо раздуты и неполны). Ведь любые хранимые и передаваемые данные могут быть повреждены. Даже биты в памяти выпадают периодически, что уж говорить о файлах или о передаче по сети (не надейтесь на встроенные checksum-ы TCP 🙂).
Что из этого следует? Следует подходить к прокачке robustness всесторонне, усиливая ее и на уровне кода, и на уровне архитектуры, и на уровне оборудования. Ну, если, конечно, вашей системе нужна серьезная robustness.
#digest
Post #82
2.06K
- 👍 9