Книга: Искусство программирования для Unix
1.6.12. Правило исправности: когда программа завершается аварийно, это должно происходить явно и по возможности быстро
1.6.12. Правило исправности: когда программа завершается аварийно, это должно происходить явно и по возможности быстро
Программное обеспечение должно быть столь же прозрачным при выходе из строя, как и при нормальной работе. Лучше всего, если программа способна справиться с неожиданными условиями путем адаптации к ним, однако наихудшими ошибками являются те, за которыми не следует восстановление, и проблема незаметно приводит к разрушению, проявляющемуся намного позднее.
Таким образом, следует писать программное обеспечение, которое как можно изящнее справляется с некорректным вводом и собственными ошибками выполнения. Однако если программа не способна справиться с ошибкой, то необходимо заставить ее прекратить выполнение таким способом, который на сколько это возможно упростит диагностику проблемы.
Рассмотрим также рекомендацию Постела (Postel)[9]: "Будьте либеральны к тому, что принимаете, и консервативны к тому, что отправляете". Постел говорил о программах сетевых служб, однако лежащая в основе такого подхода идея является более общей. Изящные программы сотрудничают с другими программами, извлекая как можно больше смысла из некорректно сформированных входных данных, и либо шумно прекращают свою работу, либо передают абсолютно четкие и корректные данные следующей программе в цепочке.
В то же время следует учитывать следующее предостережение.
Исходные HTML-документы рекомендовали "быть великодушными к тому, что принимаете", и с тех пор это сбивало нас с толку, поскольку каждый браузер принимает другое подмножество спецификаций. Именно спецификации должны быть "великодушны", а не их интерпретация.
Макилрой убеждает нас великодушно проектировать, а не компенсировать неадекватные стандарты с помощью всепозволяющих реализаций. Иначе, как он правильно отмечает, очень просто все закончится смешением разметки.
- 1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами
- 1.6.2. Правило ясности: ясность лучше, чем мастерство
- 1.6.3 Правило композиции: следует разрабатывать программы, которые будут взаимодействовать с другими программами
- 1.6.4. Правило разделения: следует отделять политику от механизма и интерфейсы от основных модулей
- 1.6.5. Правило простоты: необходимо проектировать простые программы и "добавлять сложность" только там, где это необходимо
- 1.6.6 Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается
- 1.6.7. Правило прозрачности: для того чтобы упростить проверку и отладку программы, ее конструкция должна быть обозримой
- 1.6.8. Правило устойчивости: устойчивость — следствие прозрачности и простоты
- 1.6.9. Правило представления: знания следует оставлять в данных, чтобы логика программы могла быть примитивной и устойчивой
- 1.6.10. Правило наименьшей неожиданности: при проектировании интерфейсов всегда следует использовать наименее неожиданные элементы
- 1.6.11. Правило тишины: если программа не может "сказать" что-либо неожиданное, то ей вообще не следует "говорить"
- 1.6.12. Правило исправности: когда программа завершается аварийно, это должно происходить явно и по возможности быстро
- 1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени
- 1.6.14. Правило генерации: избегайте кодирования вручную; если есть возможность, пишите программы для создания программ
- 1.6.15. Правило оптимизации: создайте опытные образцы, заставьте их работать, прежде чем перейти к оптимизации
- 1.6.16. Правило разнообразия: не следует доверять утверждениям о "единственно верном пути"
- 1.6.17. Правило расширяемости: проектируйте с учетом изменений в будущем, поскольку будущее придет скорее, чем кажется
- Когда нужен постскриптум в бизнес-тексте?
- Неисправности источника бесперебойного питания
- Неисправности акустических систем
- Пять умнейших стерв – это много
- Доверие – это гарантия от неприятностей
- Расширенные возможности указания пользовательских планов
- Что дает грамотная должностная инструкция
- Возможности, планируемые к реализации в следующих версиях
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами
- Как я нашла «правильных» потребителей, когда искала «неправильных»
- Когда старая школа молода
- Возможности SSH