1.6.5. Правило простоты: необходимо проектировать простые программы и "добавлять сложность" только там, где это необходимо
1.6.5. Правило простоты: необходимо проектировать простые программы и "добавлять сложность" только там, где это необходимо
Многие факторы приводят к усложнению программ (а следовательно, делают их более дорогими и более уязвимыми относительно ошибок). Программисты — это зачастую яркие люди, которые гордятся (часто заслуженно) своей способностью справляться со сложностями и ловко обращаться с абстракциями. Часто они состязаются друг с другом, пытаясь выяснить, кто может создать "самые замысловатые и красивые сложности". Столь же часто их способность проектировать превалирует над способностью реализовывать и отлаживать, а результатом является дорогостоящий провал.
Мнение о "замысловатой и красивой сложности" является почти оксюмороном. Unix-программисты соперничают друг с другом за "простоту и красоту". Эта мысль неявно присутствует в данных правилах, но ее стоит сделать очевидной.
Дуг Макилрой.
Еще чаще (по крайней мере, в мире коммерческого программного обеспечения) излишняя сложность исходит от проектных требований, которые скорее основаны на маркетинговой причуде месяца, а не на реальных пожеланиях заказчика или фактических возможностях программы. Множество хороших конструкций были раздавлены маркетинговым нагромождением "статей контрольного перечня" — функций, которые часто вообще не востребованы заказчиком. Круг замыкается; соперники полагают, что должны соревноваться с чужими "украшательствами" путем добавления собственных. Довольно скоро "массивная опухоль" становится индустриальным стандартом, и все используют большие, переполненные ошибками программы, которые не способны удовлетворить даже их создателей.
В любом случае, в конечном результате проигрывают все.
Единственным способом избежать этих ловушек является поощрение культуры программного обеспечения, представители которой знают, что компактность красива, и активно сопротивляются "раздуванию" и сложности кода. Речь идет об инженерной традиции, высоко оценивающей простые решения и ищущей способы разделения программных систем на небольшие взаимодействующие блоки, традиции, которая борется с попытками создания программ с большим количеством "украшательств" (или даже хуже — проектирования программ вокруг "украшательств").
Таковой была бы культура, во многом похожая на культуру Unix.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Необходимо наличие закрывающего тега
Необходимо наличие закрывающего тега В стандарте языка HTML 4.01 допускается пропуск закрывающего тега, если программа, которая будет обрабатывать соответствующий документ, сможет «догадаться» о его наличии. Поэтому вполне допустимо опускать закрывающие теги </p> между
С чего необходимо начать
С чего необходимо начать Итак, готовы ли вы начать охоту за ошибками? Этот путь может оказаться длинным и полным разочарований. Некоторые ошибки ставили в тупик все сообщество разработчиков ядра на несколько месяцев. К счастью, на каждую из таких злостных ошибок
1.5. Какой компьютер необходимо иметь для нормальной работы XP?
1.5. Какой компьютер необходимо иметь для нормальной работы XP? Microsoft утверждает, что для успешной инсталляции XP необходим процессор не менее 233 мегагерц, 64 мегабайта оперативной памяти и 1.5 гигабайта свободного места на диске. Однако, для более-менее комфортной работы,
Глава 2. Что необходимо для беспроводной связи
Глава 2. Что необходимо для беспроводной связи Беспроволная локальная сеть требует несколько иного набора компонентов оборудования, чем традиционная проводная сеть. Очевидно, что наибольшим отличием является отсутствие проводов между сетевым сервером, компьютерами
8.5.1. Что необходимо для игры
8.5.1. Что необходимо для игры Яндекс предлагает отдохнуть за онлайновыми играми. Это значит, что для игры вам потребуется браузер. Использовать можно любой из доступных, в том числе Microsoft Internet Explorer, Opera, Mozilla. Игры созданы по технологиям Macromedia Flash и Macromedia Shockwave, поэтому вам
1.6.6. Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается
1.6.6. Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается Под "большими программами" в здесь подразумеваются программы с большим объемом кода и значительной внутренней сложностью. Разрешая
19.2.2.2. По возможности необходимо придерживаться локальных соглашений
19.2.2.2. По возможности необходимо придерживаться локальных соглашений В некоторых проектах и сообществах имеются четкие соглашения для имен и номеров версий, которые не обязательно согласуются с приведенными выше рекомендациями. Например, модули Apache, как правило,
Правило 43: Необходимо знать, как обращаться к именам в шаблонных базовых классах
Правило 43: Необходимо знать, как обращаться к именам в шаблонных базовых классах Предположим, что нам нужно написать программу, которая будет посылать сообщения нескольким компаниям. Сообщения должны отправляться как в зашифрованной форме, так и в форме открытого
1.6.5. Правило простоты: необходимо проектировать простые программы и "добавлять сложность" только там, где это необходимо
1.6.5. Правило простоты: необходимо проектировать простые программы и "добавлять сложность" только там, где это необходимо Многие факторы приводят к усложнению программ (а следовательно, делают их более дорогими и более уязвимыми относительно ошибок). Программисты — это
1.6.6 Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается
1.6.6 Правило расчетливости: пишите большие программы, только если после демонстрации становится ясно, что ничего другого не остается Под "большими программами" в здесь подразумеваются программы с большим объемом кода и значительной внутренней сложностью. Разрешая
19.2.2.2. По возможности необходимо придерживаться локальных соглашений
19.2.2.2. По возможности необходимо придерживаться локальных соглашений В некоторых проектах и сообществах имеются четкие соглашения для имен и номеров версий, которые не обязательно согласуются с приведенными выше рекомендациями. Например, модули Apache, как правило,
4.2.3. Когда необходимо отменять поток
4.2.3. Когда необходимо отменять поток В общем случае не рекомендуется отменять поток, если его можно просто завершить. Лучше всего каким-то образом просигнализировать потоку о том, что он должен прекратить работу, а затем дождаться его завершения. Подробнее о способах
Что необходимо учитывать при оценке ERP-системы
Что необходимо учитывать при оценке ERP-системы В этом разделе описываются различные ситуации, имеющие значение при оценке той или иной ERP-системы.Функциональность и возможности ERP-продуктаПри оценке поставляемых программных ERP-продуктов могут применяться те же критерии,
Глава 3. Что необходимо знать для понимания хакинга
Глава 3. Что необходимо знать для понимания хакинга В этой главе я постараюсь очень кратко наметить то, что нужно знать хакеру и грамотному системному администратору, на которого легла задача по обеспечению безопасности сети. В рамках данного руководства невозможно
Для чего необходимо явное создание объектов?
Для чего необходимо явное создание объектов? Объекты создаются явным образом. Объявление сущностиb: BOOK3не влечет за собой создание объекта во время выполнения, это происходит, когда некий элемент системы выполнит операциюcreate bЭто может показаться удивительным. Разве
Почему необходимо сообщать о проблемах безопасности
Почему необходимо сообщать о проблемах безопасности Прежде всего: почему нужно сообщать о проблемах безопасности? В конце концов, разве сами производители не тестируют свою продукцию, перед тем как предложить ее потребителям? Они обязаны гарантировать отсутствие