Читаем Постигая Agile полностью

Приведем пример. Команда будет прогнозировать способ использования модуля кода (например, класса Java) в будущем и добавит некий хук, или заполнитель, который впоследствии будет заменен кодом. Хук кажется «бесплатным», но на самом деле имеет цену: он связывает команду принятым сегодня решением, которое можно было бы отложить на будущее. Когда наконец приходит время для использования хука, команда глубже понимает проблему и он должен быть другим. Команда приходит в замешательство, обнаружив, что ее предположения о том, как будет использован хук, привели к необходимости создать еще одну часть кода, которая будет обходить этот хук. Поэтому его стало гораздо труднее изменить (несмотря на то, что он пуст!) – ведь он уже используется в другом месте кода. Программист, привыкший добавлять слишком много хуков, забывает, где они расположены. Он будет постоянно сталкиваться с неприятностями при попытке использовать код, написанный несколько недель назад. Ведь окажется, что нужный код так и не был написан, а вместо него стоит комментарий со словами «надо сделать».

Это антипаттерн: добавление такого количества хуков, что становится трудно точно отследить, что именно делает код.

Другой антипаттерн, создающий сложности в понимании кода, – это зацикленность на исключениях. Исключение – редко встречающаяся ситуация, происходящая при определенном наборе обстоятельств[60]. Например, программа, которая загружает данные из файла, должна обработать случай, когда файл не найден. Ей может также понадобиться отреагировать на ситуацию, когда не удается найти папку, содержащую файл, вероятно, реагируя иначе, чем в первом случае. Возможно также, что файл существует, но не может быть прочитан или его удаляют во время чтения либо данные в нем имеют неверную кодировку. Хороший программист придумает еще множество возможных проблем в такой простой ситуации, как чтение данных из файла. Ну и на чем ему остановиться?

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

Хорошие разработчики, как правило, относятся к тому типу людей, которые зацикливаются на деталях, и исключения – это как раз такая деталь. Именно глубокий ум может превратить программиста в человека, одержимого исключениями. Когда такое случается, на командных совещаниях начинается бесконечное обсуждение исключений для особых ситуаций, в ходе которого каждый участник неожиданно приобретает твердое убеждение, что значимое для него исключение обязательно должно быть обработано.

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

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

Рис. 7.3. Блестящий веб-комикс xkcd показывает, что происходит, когда разработчики попадают в платформенную ловушку

Рон Джеффрис, партнер Кента Бека по созданию ХР, описал, как избежать платформенной ловушки. «Реализуйте то, в чем вы действительно нуждаетесь в данный момент, и не стремитесь предугадывать, что вам может понадобиться в будущем»[61]. Некоторые XP-команды любят использовать аббревиатуру YAGNI (You Ain’t Gonna Need It – «вам это не понадобится»), если речь заходит о таких ситуациях. Пытаясь предугадать будущие потребности и создавая дополнительный код, чтобы их удовлетворить, вы легко попадаете в платформенную ловушку.

Перейти на страницу:

Похожие книги

7 стратегий для достижения богатства и счастья (Золотой фонд mlm)
7 стратегий для достижения богатства и счастья (Золотой фонд mlm)

Джим Рон (Jim Rohn) – всемирно известный философ бизнеса. Разрабатывал стратегию работы компаний Coca-Cola, I.B.M., Xerox, General Motors и других. Был личным «бизнес-тренером» Билла Гейтса. Владеет контрольным пакетом акций Dodge. С 1996 года – Исполнительный Вицепрезидент Herbalife International. По его словам, в настоящее время самая перспективная и динамичная отрасль мировой экономики – Wellness Industry, индустрия здорового образа жизни, в которой и работает.Автор книги предлагает семь уникальных стратегий для достижения успеха. Взяв их на вооружение, вы сможете контролировать свое время и финансы, научитесь меняться и стремиться к знаниям, обретете заряд энергии и желание добиться цели, окружите себя победителями.

Джим Рон

Деловая литература / Философия / Образование и наука / Финансы и бизнес
Максимум
Максимум

Стать специалистом высочайшего уровня – вопрос не только и не столько природных способностей к тому или иному виду деятельности. Мы привыкли рассуждать о врожденном таланте скрипача, математика, теннисиста, нас интригует умение запоминать длинные тексты и перемножать в уме огромные числа. Андерс Эрикссон, шведский психолог с мировым именем, профессор Университета Флориды, уверен, что нет такого навыка, который нельзя было бы развить. Человек обладает невероятными возможностями, его мозг и тело способны совершенствоваться практически до бесконечности: это доказано на примере множества выдающихся людей, проявивших себя в самых разных областях. О том, как обрести уникальные навыки и достичь профессионального мастерства, рассказывает эта книга.

Андерс Эрикссон , Аня Воронцова , Роберт Пул

Деловая литература / Самиздат, сетевая литература
Управление жизненным циклом корпораций
Управление жизненным циклом корпораций

Любая организация переживает тот же жизненный цикл, что и человек: она рождается в муках, затем наступают детство, юность, зрелость. На самом деле люди начинают стареть с момента своего рождения. То же самое происходит и с организациями.Разница этих процессов только в том, что для человека сыворотку вечной молодости еще не придумали, а для компаний она существует. Этот секрет рыночной молодости и задора изобрел один из лучших бизнес-мыслителей современности Ицхак Адизес.Эта книга – «библия» метода Адизеса. Это единственная книга, в которой автор последовательно рассматривает все три основные составляющие части своей методологии. В ней вы найдете блестящие практические рекомендации по совершенствованию управления и ответы на вопросы: почему одни компании достигают колоссального, а также устойчивого расцвета, а другие стареют и умирают? какие проблемы на каком этапе развития нормальны, а какие аномальны? как быстро диагностировать и решить управленческие проблемы? какие четыре стиля лидерства необходимы для успешного сотрудничества и руководства организацией?Книга переведена на 30 языков.

Ицхак Калдерон Адизес

Деловая литература / Финансы и бизнес