Рубрика «refactoring» - 3

Содержание

Сценарии (часть 2)

Git tag: Step06

Теперь, когда мы реализовали объекты запроса и ответа, добавляем их. Помещаем в файл tests/use_cases/test_storageroom_list_use_case.py следующий код:

Читать полностью »

Содержание

Доменные модели

Git tag: Step02

Начнем с простого определения модели StorageRoom. Как было сказано ранее, модели в чистой архитектуре очень легкие, по крайней мере, легче, чем их ORM-аналоги в фреймворках.

Раз мы следуем методологии TDD, то первое, что мы напишем, это тесты. Создадим файл tests/domain/test_storageroom.py и поместим внутри него этот код:
Читать полностью »

Примечание переводчика

Данная статья является переводом. Дословный перевод занял 35 страниц А4 в ворде. Планирую разбить её на 5-6 частей. Думаю, данная тема должна быть полезна многим программистам, желающим писать свои web-приложения лучше и чище. Так же статья полезна тем, кто хочет научиться писать web-приложения с методологией TDD с применением именно модульных тестов, а не интеграционных, как это обычно делалось в тех статьях, что попадались мне на глаза. Если где-то использованы неверные термины или перевод кажется слишком машинным — напишите мне в личку, вряд ли это гугл-транслятор, скорее всего дело в моей косноязычности и посредственном знанием английского языка.

Год назад мой друг Roberto Ciatti познакомил меня с концепцией, которую Роберт Мартин называет чистой архитектурой. Дядя Боб много говорит об этой концепции на конференциях и пишет о ней очень интересные статьи. «Чистая архитектура» представляет собой способ структурирования системы программного обеспечения, набор соглашений о различных слоях и ролях их участников, нечто большее, чем строгие правила.

Как он уже говорил в своей статье «Чистая архитектура» (перевод на хабре), идея самого подхода не нова, она строится на множестве концепций, которые продвигались многими разработчиками программного обеспечения в течение последних 3-х десяти лет. Читать полностью »

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

Итак, кому же? В первую очередь, наверное, таким же как я — новичкам в области проектирования программных систем. Тем, кто не обладает колоссальным эмпирическим опытом и владеет шаблонами проектирования исключительно на основании общих рассуждений. Ещё более эффективным будет прочтение такой статьи тем, кто ни разу не слышал про SOLID, GRASP и прочие принципы проектирования. Ибо я искренне уповаю на то, что мне удастся показать, как из базовых теоретических суждений на основании законов логики выводятся все те непоколебимые постулаты, ранее казавшиеся a priori истинными.

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

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

Наиболее частая ситуация, которую я могу привести в пример — str_repeat('очень-', 20) старый код, не знающий даже классов, планируется перенести или частично использовать в современном фреймворке, но переписывать тысячи строк и десятки зависимостей нет времени. Такое бывает, когда заказчик вдруг решает существенно модернизировать или развивать проект, который 10+ лет работал без изменений, а сапортил его один парттайм-олдскул-программист изредка перезагружая пару-тройку сервисов и восстанавливая пароли.
Читать полностью »

image

Вы получили или пришли на проект, которому d+дцать лет? PHP код был написан в перерывах между охотой на мамонтов и поэтому слегка не читаем? Вам предстоит это как минимум сапортить, как максимум — рефакторить или переписывать?

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

Как ни странно, но оказалось, что пошаговой инструкции для такой популярной библиотеки, как log4net, еще нет на Хабре. Исправляю эту недоработку.
Читать полностью »

В некоторых языках программирования (например, в Scala) есть именованные параметры. Именованные параметры позволяют контролировать присвоение значений, дополнительным бонусом выступает возможность использовать свой порядок указания параметров, нежели описано в сигнатуре функции. В рамках цикла статей BadDesign, предложу урезанный механизм именованных параметров для Java.
Читать полностью »

10 моих любимых функций CodeRush для .NET разработки в Visual Studio
Вкратце, DevExpress CodeRush — это платный плагин для Visual Studio, относящийся к классу productivity tools, который позволяет разработчику быстрее писать более качественный код, отлаживать его, запускать тесты, обнаруживать дефекты и выполнять другие полезные функции.

В этой статье я постарался собрать не просто список своих собственных предпочтений по его использованию, но и провести небольшую валидацию так, чтобы на выходе большинство из представленных фишек использовались другими ребятами в моей команде. Я считаю, что даже несмотря на активное развитие Visual Studio (особенно порадовала 2012я версия) и превращение некоторых из описанных функций в нативные, необходимость в сторонних помощниках типа CodeRush и ReSharper все еще актуальна для части разработчиков, так как позволяет сэкономить время и повысить общее удобство кодирования. Наконец, не стоит забывать, что еще достаточно разработчиков сидят на Visual Studio 2010- (как минимум сужу по множеству заказчиков) ввиду особенностей проекта, бюджета или просто привычки.

Итак, кому интересно узнать, что другие .NET разработчики используют для повышения эффективности пусть и малой, но не менее увлекательной части процесса конструирования программного обеспечения, прошу пожаловать под кат (внимание, много картинок и видео, а также опрос!)
Читать полностью »

Luxoft Training приглашает Вас на мастер-классы одного из лучших тренеров в области архитектуры и разработки ПО – Евгения Кривошеева!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js