Переписать (программирование)
Переписывание — это в компьютерном программировании действие или результат повторной реализации значительной части существующей функциональности без повторного использования ее исходного кода . Когда при перезаписи вообще не используется существующий код, принято говорить о переписывании с нуля .
Мотивации
[ редактировать ]Часть программного обеспечения обычно переписывается, когда применимо одно или несколько из следующих условий:
- его исходный код недоступен или доступен только по несовместимой лицензии.
- его код невозможно адаптировать к новой целевой платформе
- его существующий код стал слишком сложным для обработки и расширения.
- задача отладки кажется слишком сложной
- программисту трудно понять исходный код
- разработчики изучают новые методы или хотят провести капитальный ремонт функций, требующий больших изменений.
- язык программирования исходного кода должен быть изменен
Риски
[ редактировать ]Несколько инженеров-программистов, таких как Джоэл Спольски. [1] предостерегали от тотальных переписываний, особенно в условиях ограничений графика или конкурентного давления. Хотя разработчики изначально могут приветствовать возможность исправить исторические ошибки проектирования, при переписывании также отбрасываются те части дизайна, которые работают должным образом. Переписывание обязывает команду разработчиков предоставлять не только новые функции, но и все те функции, которые существуют в предыдущем коде, потенциально внося новые ошибки или устраняя ранее исправленные ошибки. [2] [3] Перезапись также мешает отслеживать неисправленные ошибки в старой версии. [4]
Инкрементное переписывание — это альтернативный подход, при котором разработчики постепенно заменяют существующий код вызовами новой реализации, расширяя эту реализацию до тех пор, пока она полностью не заменит старую. Такой подход позволяет избежать значительной потери функциональности во время перезаписи. Разработка программного обеспечения для чистых помещений — это еще один подход, который требует от команды работать на основе исчерпывающей письменной спецификации функциональности программного обеспечения без доступа к его коду. [5]
Примеры
[ редактировать ]Navigator Проект Netscape по улучшению макета HTML в 4 был приведен в качестве примера неудачной перезаписи. Новый механизм компоновки ( Gecko ) был разработан независимо от Navigator и с трудом интегрировался с кодом Navigator; следовательно, сам Навигатор был переписан на новом движке, что привело к нарушению многих существующих функций и задержке выпуска на несколько месяцев. Тем временем Microsoft сосредоточилась на постепенном улучшении Internet Explorer и не столкнулась с такими же препятствиями. [3] [6] По иронии судьбы, сам Navigator представлял собой успешную переписанную версию NCSA Mosaic для чистых помещений под контролем разработчиков этой программы. См. Войны браузеров .
Некоторые проекты, в которых упоминаются крупные переписывания в своей истории:
- HTTP-сервер Apache (1)
- Мгновенный мессенджер AOL (1)
- ПРИВЯЗАТЬ (1)
- Фринет (1)
- ГРАБ (1)
- Мажордом (1)
- МедиаВики (1)
- Мозилла/Нетскейп (1)
- Ледяной каст (0–1)
- неткат (1)
- ОпенРПГ (1)
- PHP (1–2)
- Проект Занаду (0–1)
- Sun Secure Global Desktop (1)
- vБюллетень (2)
- Веб-объекты (1)
- Зопе (1)
Техники
[ редактировать ]См. также
[ редактировать ]- Рефакторинг кода
- Разработка программного обеспечения с открытым исходным кодом
- Технический долг
- Ад развития
- Портирование
- Обновление игрового движка
- Реверс-инжиниринг
Ссылки
[ редактировать ]- ^ Спольски, Джоэл. «Чего никогда не следует делать, часть I» . Джоэл о программном обеспечении . Проверено 23 января 2015 г.
- ^ Ронкес Агербек, Йост (15 апреля 2005 г.). «Никогда не переписывайте код с нуля» . Архивировано из оригинала 10 октября 2008 года . Проверено 11 сентября 2008 г.
- ^ Jump up to: а б Спольски, Джоэл (6 апреля 2000 г.). «Чего никогда не следует делать» . Проверено 11 сентября 2008 г.
- ^ Завински, Джейми . «Каскад подростков с дефицитом внимания» . Проверено 11 сентября 2008 г.
- ^ Тилли, Бен (29 сентября 2001 г.). «Переписывание с нуля огромной базы кода» . Проверено 11 сентября 2008 г.
- ^ Завински, Джейми (31 марта 1999 г.). «отставка и вскрытие» . Проверено 11 сентября 2008 г.