Книга: Искусство программирования для Unix
1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами
1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами
Как однажды заметил Браян Керниган, "управление сложностью является сущностью компьютерного программирования" [41]. Отладка занимает большую часть времени разработки, и выпуск работающей системы обычно в меньшей степени является результатом талантливого проектирования, и в большей — результатом должного управления, исключающего многократное повторение ошибок.
Трансляторы, компиляторы, блок-схемы, процедурное программирование, структурное программирование, "искусственный интеллект", языки четвертого поколения, объектно-ориентированные языки и бесчисленные методологии разработки программного обеспечения рекламировались и продавались как средство борьбы с этой проблемой. Все они потерпели неудачу, если только их успех заключался в повышении обычного уровня сложности программы до той точки, где (вновь) человеческий мозг едва ли мог справиться. Как заметил Фред Брукс [8], "серебряной пули не существует".
Единственным способом создания сложной программы, не обреченной заранее на провал, является сдерживание ее глобальной сложности, т.е. построение программы из простых частей, соединенных четко определенными интерфейсами, так что большинство проблем являются локальными, и можно рассчитывать на обновление одной из частей без разрушения целого.
- 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. Правило расширяемости: проектируйте с учетом изменений в будущем, поскольку будущее придет скорее, чем кажется
- 1.5. Потренируйте свою интуицию: что следует запомнить
- Прием 45. «Простые слова. Четкие идеи. Сильные эмоции»
- 3. Null-значения и общее правило вычисления выражений
- 1.4 Структуры данных, связанные с драйверами устройств Windows
- Риски, связанные с хостингом и потерей данных
- Добавление веб-части на страницу
- Когда следует задавать проясняющие вопросы
- Правило 16. Группируйте связанные между собой элементы
- Как написать аутлайн
- Как записать файлы на компакт-диск?
- Как записать звук и включить его в звуковую схему Windows?
- Повторяем части шаблона