Совершенный код: Желательные характеристики хорошего проекта

Сейчас читаю одну очень интересную книгу Макконнелла под названием «Совершенный код«, которая, кстати, является классикой жанра в области проектирования программ и написанию хорошего кода. Поскольку всё то, о чем говорится в книге, полностью подходит и для веб-разработки, решил делиться в блоге интересными моментами, которые мне показались очень важными. И как раз сегодня речь пойдет о желательных характеристиках хорошего проекта, который разрабатывается.

Желательные характеристики хорошего проекта

Желательные характеристики хорошего проекта


Высококачественные проекты программ имеют несколько общих характеристик. Если вы сумеете достичь всех этих целей, ваш проект на самом деле будет очень хорош.

Вот список таких внутренних характеристик проекта:

Минимальная сложность. В силу только что описанных причин главной целью проектирования должна быть минимизация сложности. Избегайте создания «хитроумных» проектов: как правило, их трудно понять. Вместо этого создавайте «простые» и «понятные» проекты. Если при работе над отдельным фрагментом программы проект не позволяет безопасно игнорировать большинство остальных фрагментов, он неудачен.

Простота сопровождения, Проектируя приложение, не забывайте о программистах, которые будут его сопровождать. Постоянно представляйте себе вопросы, которые будут возникать у них при взгляде на создаваемый вами код. Думайте о таких программистах как о своей аудитории и проектируйте систему так, чтобы ее работа была очевидной.

Слабое сопряжение. Слабое сопряжение (loose coupling) предполагает сведение к минимуму числа соединений между разными частями программы. Для проектирования классов с минимальным числом взаимосвязей используйте принципы адекватной абстракции интерфейсов, инкапсуляцию и сокрытие информации. Это позволит максимально облегчить интеграцию, тестирование и сопровождение программы.

Расширяемость. Расширяемостью системы называют свойство, позволяющее улучшать систему, не нарушая ее основной структуры. Изменение одного фрагмента системы не должно влиять на ее другие фрагменты. Внесение наиболее вероятных изменений должно требовать наименьших усилий.

Возможность повторного использования. Проектируйте систему так, чтобы ее фрагменты можно было повторно использовать в других системах. Высокий коэффициент объединения по входу При высоком коэффициенте объединения по входу (fan#in) к конкретному классу обращается большое число других классов. Это значит, что система предусматривает интенсивное использование вспомогательных низкоуровневых классов.

Низкий или средний коэффициент разветвления по выходу. Это означает, что конкретный класс обращается к малому или среднему числу других классов. Высокий коэффициент разветвления по выходу (fan#out) (более семи) говорит о том, что класс использует большое число других классов и, возможно, слишком сложен. Ученые обнаружили, что низкий коэффициент разветвления по выходу выгоден как в случае вызова методов из метода, так и в случае вызова методов из класса (Card and Glass, 1990; Basili, Briand, and Melo, 1996).

Портируемость. Проектируйте систему так, чтобы ее можно было легко адаптировать к другой среде.

Минимальная, но полная функциональность. Этот аспект подразумевает отсутствие в системе лишних частей (Wirth, 1995; McConnell, 1997). Вольтер говорил, что книга закончена не тогда, когда в нее больше нечего добавить, а когда из нее ничего нельзя выбросить. При разработке ПО это верно вдвойне, потому что дополнительный код необходимо разработать, проанализировать, протестировать, а также пересматривать при изменении других фрагментов программы. Кроме того, в будущих версиях приложения придется поддерживать обратную совместимость с дополнительным кодом. Опасайтесь вопроса: «Эту функцию реализовать легко — почему бы этого не сделать?»

Стратификация. Под стратификацией понимают разделение уровней декомпозиции, позволяющее изучить систему на любом отдельном уровне и получить при этом согласованное представление. Проектируйте систему так, чтобы ее можно было изучать на отдельных уровнях, игнорируя другие уровни.

Например, если вы создаете современную систему, которая должна использовать большой объем старого, плохо спроектированного кода, напишите уровень, отвечающий за взаи модействие со старым кодом. Спроектируйте этот уровень так, чтобы он скрывал плохое качество старого кода, предоставляя более новым уровням согласованный набор сервисов. Пусть остальные части системы работают с этими классами вместо старого кода.

Соответствие стандартным методикам. Чем экзотичнее система, тем сложнее будет другим программистам понять ее. Попытайтесь придать всей системе привычный для разработчиков облик, применяя стандартные популярные подходы.

Совершенный код: Желательные характеристики хорошего проекта
7 votes, 5.00 avg. rating (99% score)

8 thoughts on “Совершенный код: Желательные характеристики хорошего проекта

  1. Обольстительные рассказы проституток на сайте Girls Room волшебным образом раскрасят ваши будни восхитительными красками и подарят огромное наслаждение. Здесь дешевые проститутки с выездом в Москве не только полностью удовлетворят ваш интерес, но и оправдают любые даже самые откровенные ожидания и фантазии. Рассказы проституток, которые вы здесь прочтете помогут почувствовать себя настоящим гигантом в сексе. А фото проституток только дополнят ваше удовольствие. Здесь проститутки Казани и проститутки Одессы откроют для вас дверь в мир сексуальных удовольствий, проститутки Воронежа и проститутки Харькова помогут Вам ощутить себя обожаемым и всегда желанным мужчиной, проститутки Крового Рога и проститутки Екатеринберга расскажут самые яркие истории из своей жизни, проститутки Красноярска и проститутки Полтавы откроют для вас науку получения и доставления удовольствия от секса.
    Girlsroom.biz.ua — дешевые проститутки в москве с номерами телефонов

  2. This message is posted here using XRumer + XEvil 3.0
    XEvil 3.0 is a revolutionary application that can bypass almost any anti-botnet protection.
    Captcha Recognition Google, Facebook, Yandex, VKontakte, Captcha Com and over 8.4 million other types!
    You read this — it means it works! 😉
    Details on the official website of XEvil.Net, there is a free demo version.

  3. Поехали в отпуск, и занемог ребенок, а деньжат недостаточно. Легко оформили займ онлайн, на кредитную карту пришли наличные моментально. Отдали спустя недельку уже дома. Никаких справок либо поручителей. Необходим только лишь телефончик и пластиковая карта с которой можно забрать всю ссуду через несколько минут после одобрения заявки.
    Выручали подобные быстрые финансы и родственников, когда знакомому необходимо было немедленно проплатить экзамен. Никому не надо объяснять, унижаться и вымаливать. Сам выбираешь сумму и время возврата. Рекомендую всем, кто очутился в сложной ситуации.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *