Legacy: полезные советы для работы со старым кодом |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-10-13 05:27 «Унаследованный» код, который большинство называют просто 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-код, который остался в современных системах, однажды перестанет быть таким ужасным, мы получим богатейшую кодовую базу. Поэтому воспринимайте его как возможность, а не как преграду :) Источник: vk.com Комментарии: |
|