Legacy: полезные советы для работы со старым кодом

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


«Унаследованный» код, который большинство называют просто legacy-кодом, — боль разработчиков. Работать с ним сложно: комментарии не всегда понятны или отсутствуют, решения могли устареть, а логику изменений (да и даже просто принцип работы программы) трудно отследить без автора. Что делать, если вы впервые столкнулись с legacy-??системой? Как превратить её из запутанной в чистую и современную? И какие правила соблюдать при написании собственного кода, чтобы когда-нибудь ваш последователь не ругался на вас так же, как ругаетесь сейчас вы?

Первый совет: «Если в коде что-то реализовано не так, как вы привыкли, — это не значит, что оно реализовано неправильно». Остальные — в нашей сегодняшней подборке, частично составленной по мотивам лекции Игоря Старикова в Школе бэкенд-разработки.

— Эффективная работа с legacy-кодом на Python. Скотт Триглия

youtu.be/RMt43wyg-zg

Автор предлагает ряд инструментов для понимания legacy-кода на Python. Изучая чужой код, следуйте простым правилам: внедряйте небольшие изменения, комментируйте и улучшайте читаемость, тестируйте решения, пришедшие на замену старым, с помощью фиктивных функций и проводите рефакторинг функция за функцией. Так вы научитесь распознавать в коде случайное и существенное и сможете вносить более серьёзные изменения, не боясь сломать логику.

— Итеративный подход

en.wikipedia.org/wiki/Iterative_and_incremental_development

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

— Эффективная работа с унаследованным кодом. Майкл К. Физерс

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

— Проверка типов в Python. Карл Майер

youtu.be/f3Gj2X3Rvpk

Благодаря типизированию в Python код проще понять и отловить в нём ошибки: провести статический анализ, а также снизить угрозу появления багов в будущем. Из доклада вы узнаете, как работает проверка типов на примере статического анализатора mypy, как внедрять её поэтапно и не наступить на известные грабли.

— Азбука вежливости разработчика

pythonz.net/articles/30

Небольшая подборка советов по написанию кода — они помогут вам и вашим коллегам не утонуть в нём по мере развития проекта. Качество, доступность и актуальность документации — первое и главное: ведите журнал изменений, документируйте API (или настройте автодокументирование), добавляйте пояснения внутри функций, нумеруйте версии и вовремя предупреждайте об устаревании. При оформлении кода придерживайтесь принципов наименьшей неожиданности и разумных умолчаний, следите за покрытием тестами, доступностью пакетов приложения и самого исходного кода.

— Привлечение правильных разработчиков к правильным проектам. Андреа Гуле

youtu.be/nVI2zfzKYqM

Видео рассказывает, в каких аспектах работа с чужим кодом отличается от написания собственного и как полюбить (!) legacy. Андреа учит искать вдохновение в рутинной и монотонной работе. Главными источниками мотивации она называет видимость прогресса при сравнении старого и нового кода и азарт — сродни тому, что испытывает археолог. Даже улучшение изначально неопрятного кода может быть приятной, если её выполняет тот, кто любит исправлять ошибки и отлаживать продукт.

— Legacy Code Rocks

legacycode.rocks

Подкаст и сообщество программистов, часто сталкивающихся с legacy. Например, автор доклада в предыдущем пункте входит в Legacy Code Rocks. Разумеется, это не посиделки людей, которые ничего не хотят менять в проекте. В комьюнити принято уважать test driven-разработку и непрерывную интеграцию, не бояться рефакторинга и так далее. Представьте: если весь legacy-код, который остался в современных системах, однажды перестанет быть таким ужасным, мы получим богатейшую кодовую базу. Поэтому воспринимайте его как возможность, а не как преграду :)

Комментарии: