Беспорядочный мегаполис

Поднимайте, поднимайте, ровняйте путь, убирайте преграду с пути народа моего.

Исайя, 57:14

Первая программная система, которую мы рассмотрим, будет называться «Беспорядочный мегаполис». Я вспоминаю о ней с нежностью

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

Я впервые столкнулся с Мегаполисом, когда поступил на работу в создавшую эту систему компанию. На первых порах работа казалась весьма перспективной. Я должен был присоединиться к группе, работавшей над «современной» кодовой базой на С++ для Linux; разработка этой кодовой базы продолжалась уже несколько лет. Словом, весьма заманчивая штука для каждого, кто разделяет мои специфические увлечения.

На первых порах работа шла не слишком гладко. Впрочем, вступая в группу для работы над новой кодовой базой, трудно ожидать, что все пойдет как по маслу. Однако проходили дни (и недели), но лучше не становилось. Изучение кода требовало неимоверно много времени, и в системе не было очевидных маршрутов. Это был тревожный признак. На микроуровне, при рассмотрении отдельных строк, методов и компонентов, было видно, что код запутан и плохо скомпонован. В нем не было ни единства, ни стиля, ни общих концепций, объединяющих разрозненные части. Тоже тревожный признак. Управление передавалось в системе по совершенно невообразимым и непредсказуемым путям – еще один тревожный признак. Вокруг было столько скверных «запахов кода» (Fowler 1999), что кодовая база не просто плохо пахла – она смердела, как зловонная мусорная свалка в жаркий летний день. Совершенно очевидный тревожный признак. Данные редко хранились поблизости от места их использования. В системе часто вводились ка – кие-то хитроумные кэширующие промежуточные уровни, чтобы перетащить данные в более удобное место – снова тревожный признак.

No related posts.

Подпишитесь на рассылку по почте:

Введите свой адрес почты, чтобы получать уведомления о новых статьях.

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>