Изменять код
В процессе разработки программного обеспечения нет такого понятия, как «стагнация». Все, что вы разрабатываете сейчас — просто очередная версия компонента, который вероятно будет меняться в будущем. Изменение является самой распространенным явлением в мире разработки программного обеспечения и вам лучше принять это как факт. Рассчитывайте на возможные изменения всего, что вы разрабатываете и поэтому проектируйте ваш код более модульным. Это упрощает изменения и в тоже время увеличивает качество кода. Старайтесь придерживаться концепций DRY и YAGNI. Вы часто будете в ситуации когда вы смотрите на ваш код и представляете, что вы могли бы сделать это лучше. Так пусть эта мысль не мешает вам спать. Садитесь сразу за дело и рефакторинг! Если не сделаете это сейчас, вы возможно никогда этого не сделаете. Чем дольше ждете, тем сложнее и дороже это будет. И это может вырасти в лишнюю головную боль с которой не захочется связываться.
«Хороший код — это код который легко изменять. Код стремится измениться до момента, когда его уже не легко изменять. Весь код становится плохим кодом.» Неизвестный автор.
Читать полностью »
Рубрика «Проектирование и рефакторинг» - 67
8 вещей, которых не должен бояться разработчик
2013-07-18 в 14:53, admin, рубрики: gtd, качество кода, Программирование, Проектирование и рефакторингДинамические примеси в PHP
2013-07-10 в 10:29, admin, рубрики: php, Блог компании «Alawar Entertainment», проектирование взаимодействия, Проектирование и рефакторинг, метки: PHP, проектирование взаимодействияНачиная с версии 5.4.0, в PHP появится новая конструкция языка — трейты (traits), реализующая возможность использования примеси (mix in). Механизм примесей является еще одним механизмом повторного использования кода и присутствует в том или ином виде в других языках, например, Ruby, Python, Common Lisp, etc.
Примеси позволяют использовать существующий код при реализации поведения классов, избегая при этом многих проблем множественного наследования. Взаимодействующие друг с другом примеси, объединенные в отдельные программные библиотеки, представляют собой очень мощный инструмент при реализации сложной логики.
Следует отметить, что реализации примесей в PHP существуют как минимум с версии 4.0.1, и в настоящее время присутствуют, чаще всего под именем behavior, в ряде популярных фреймворков, например, в Yii, Symfony, Doctrine, CakePhp, Propel.
Цель статьи — продемонстрировать и сравнить несколько основных подходов к реализации примесей в PHP до версии 5.4.0, базирующихся только лишь на функциях самого языка и не использующих сторонние расширения, как-то, например, функцию runkit_method_copy из PECL runkit.
Читать полностью »
Грабли 2: Виртуальное наследование
2013-07-08 в 4:37, admin, рубрики: c++, inheritance, KISS, наследование, Программирование, Проектирование и рефакторинг, метки: inheritance, kiss, наследованиеСтатья о том, как множественное наследование все усложняет. Как виртуальное наследование, на первый взгляд, реализовано нелогично. Как на второй взгляд логика появляется, но уровень сложности и запутанности продолжает расти. В общем, чем сложнее задача, тем более простые нужно подбирать инструменты.
Все основано на реальных событиях, но примеры были максимально упрощены, чтобы в них осталась лишь суть проблемы.
Читать полностью »
Реформы в IT-отделе. Манифест разработчика
2013-07-06 в 6:47, admin, рубрики: agile, human resources, паттерны, Песочница, Проектирование и рефакторинг, управление проектами, шаблоны проектирования, метки: agile, human resources, паттерны, управление проектами, шаблоны проектированияПреамбула
Я разработчик в небольшой организации. Цель моей работы — делать людям хорошо. Я ускоряю их работу, добавляя тот или иной функционал к уже существующему продукту, моими клиентами являются сотрудники самой организации. Современный бизнес очень динамичен, каждый день появляются новые идеи и потребности, то есть мой план расписан на год вперед, и каждый месяц перестраивается под новые задачи.
Однако, на фоне, казалось бы, динамично растущего бизнеса (кол-во сотрудников увеличивается на 10-15 человек в год) отдел IT растет значительно медленнее. Основное требование к выполняемой работе: “Быстро!”, как следствие плохо масштабируемый код, подверженный плавающим ошибкам.
Сейчас наша компания переживает новый виток развития ПО (период 5 лет), постепенно мы отказываемся от старых разработок и переписываем то, что есть, придерживаясь объектной модели и паттернов, а заодно и переезжаем на новые сервера (новые железо + софт), но требования остались на прежнем уровне — все должно быть сделано вчера.
В очередной раз при релизе кода работа сотрудников была парализована на пару часов, и ген. директор спросила: “Ребята, сколько это еще будет продолжаться?”, на что я ответил: “Когда завершится переезд”, а спустя сутки прислал более подробный ответ, описав то, что меня волнует в последнее время все больше и больше.
Зачем я это рассказываю? А затем, что моя история не уникальна. Кому-то эта статья даст пищу для размышлений, а то и подтолкнет к действиям. Кто-то поделится своим опытом, а кто-то в очередной раз порадуется, что у него в компании все намного лучше.
Читать полностью »
Model-View в QML. Часть первая: Представления на основе готовых компонентов
2013-06-24 в 6:29, admin, рубрики: Model View Controller, mvc, QML, qt, qt quick, Qt Software, Программирование, Проектирование и рефакторинг, метки: Model View Controller, mvc, QML, Qt, qt quickВ этой части моего цикла стсатей про Model-View в QML мы начнем рассматривать представления и начнем с тех, которые делаются на основе готовых компонентов.
Содержание:
Долой качество!
2013-06-20 в 23:28, admin, рубрики: quality, Проектирование и рефакторинг, Совершенный код, управление проектами, метки: qualityЕсли грубо считать качество в наработке на отказ, то понятно, что бюджеты под разные критерии разные. Как в айти, так и в нормальном производстве.
Если сковородка может сломаться через пол года, можно взять дешёвую сталь, простое покрытие и китайских рабочих. Если нужен срок жизни в десять лет, то придётся брать хорошие материалы, дорогие технологии и made in Germany.
Если мы можем игнорировать, что от сайта отваливается один пользователь из тысячи, можно быстро сварганить что-то простое. Если потеря одной финансовой транцакции грозит штрафом на пол миллиона, придётся подробно продумывать архитектуру, выбирать надёжные библиотеки и серьёзно заниматься тестированием.
Но при этом «быстро и просто» не значат «плохо».
Если сайт сделан так, что от него отваливается каждый десятый, то мы поимеем головную боль, постоянные авралы и бездонную дыру, куда проваливается бюджет. И хвастаться, сколько сэкономили на быстрой и простой разработке и отсутствии анализа, тоже не получится.
И вот тут я хочу напомнить почему-то забываемый всеми момент.
Авралы, расходы и головную боль мы поимеем только тогда, когда система закрыта. Если она открыта, все эти радости достанутся кому-нибудь другому.
Читать полностью »
Российский футбол на «плюсе». А при плюсе? Или такой футбол нам не нужен: ч.1 теоретическая
2013-06-20 в 9:23, admin, рубрики: алгоритм, Алгоритмы, Проектирование и рефакторинг, спорт, управление проектами, метки: алгоритм, спорт Добрый день! Долго думал, писать пост или нет. Но буквально на днях появился утвержденный календарь ЧР по футболу 2013/2014, и вот под впечатлением сие текст…
Что мы видим, взглянув на расписание игр.
Тур 16: 2 ноября Краснодар-Кубань и Зенит — Амкар… Навскидку в Краснодаре +10, в СПб -5.
Тур 17: 9 ноября Урал-Ростов: в Екатеринбурге -10, в Ростове — на –Дону +10, Рубин – Краснодар, аналогично…
Также и 23, 30 ноября, 7 декабря, 8 марта, 15 марта, прогресс шагает семимильными шагами, но обходит руководителей российского футбола стороной… В тоже время в мае, июле, августе многие «северные» команды приезжают в гости на юг, в самую жару, для того чтобы получать «солнечные удары»…?! «Такой хоккей нам не нужен!»
Читать полностью »
Voldemort типы в D
2013-06-16 в 15:27, admin, рубрики: dlang, voldemort, переводы, Программирование, Проектирование и рефакторинг, метки: dlang, voldemortДанный пост расскажет об уникальной фишке D — Voldemort типы. Типы, которые можно использовать, но нельзя назвать. Данное название не очень подходит им, но Walter Bright очень любит так их называть. Voldemort типы очень часто встречаются в стандартной библиотеке Phobos, особенно в модулях std.algorithm и std.array. Осваивающие D могут часами штудировать документацию в поисках типа, возвращаемого из splitter или joiner, а возвращают они именно Voldemort типы. После этого поста можно смело открывать исходники std.algorithm, ибо никакие Сами-Знаете-Кто вам будут не страшны.
Иногда, взаимодействие существующих возможностей может привести к неожиданным сюрпризам. Мне нравится считать, что мы изначально заложили Voldemort типы в D, но на самом деле они были найдены Андреем Александреску. Что это за Voldermort типы? Читайте дальше.
Model-View в QML. Часть нулевая, вводная
2013-05-31 в 20:51, admin, рубрики: Model View Controller, mvc, QML, qt, qt quick, Qt Software, Программирование, Проектирование и рефакторинг, метки: Model View Controller, mvc, QML, Qt, qt quickОдним из наиболее распространенных и эффективных приемов проектирования программ является использование шаблона программирования MVC (Model-View-Controller) — Модель-Представление-Контроль. MVC позволяет разделить части программы, отвечающие за хранение и доступ к данным, отображение данных и за взаимодействие с пользователем на отдельные слабо связанные модули. Подобное разделение ответственности упрощает структуру программы и позволяет вносить изменения в одну из этих частей не затрагивая остальные.
Такой подход активно применяется в Qt, а в QML вообще является краеугольным камнем. Так что тем, кто изучает QML понимание принципов MVC будет совсем не лишним.
Читать полностью »
Множественные ветвления и шаблон «Правила»
2013-05-07 в 22:41, admin, рубрики: Программирование, Проектирование и рефакторинг, рефакторинг, шаблоны проектирования, метки: Программирование, рефакторинг, шаблоны проектированияЗдравствуйте, уважаемые хабрачитатели. В этой статье я хотел бы поделиться знаниями об одном небольшом и простом, но полезном шаблоне, про который обычно не пишут в книжках (возможно, потому, что он является частным случаем шаблона «Команда»). Это шаблон «Правила» (Rules Pattern). Вероятно, для многих он будет очень знакомым, но кому-то будет интересно с ним познакомиться.