Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Мотивации [ править ]

Часть программного обеспечения обычно переписывается, когда применяется одно или несколько из следующих условий:

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

Риски [ править ]

Некоторые инженеры-программисты, такие как Джоэл Спольски [1] , предостерегают от полной перезаписи, особенно в условиях ограничений графика или давления со стороны конкурентов. Хотя разработчики изначально могут приветствовать возможность исправить исторические ошибки проектирования, при переписывании также отбрасываются те части дизайна, которые работают должным образом. Переписывание обязывает команду разработчиков предоставлять не только новые функции, но и все те, которые существуют в предыдущем коде, потенциально вводя новые ошибки или регрессии ранее исправленных ошибок. [2] [3] Перезапись также мешает отслеживанию не исправленных ошибок в старой версии. [4]

Инкрементное переписывание - это альтернативный подход, при котором разработчики постепенно заменяют существующий код вызовами новой реализации, расширяя эту реализацию до тех пор, пока она полностью не заменит старую. Такой подход позволяет избежать потери функциональности во время перезаписи. Разработка программного обеспечения для чистых помещений - это еще один подход, который требует, чтобы команда работала с исчерпывающей письменной спецификацией функциональности программного обеспечения без доступа к его коду. [5]

Известные примеры [ править ]

Проект Netscape по улучшению HTML-разметки в Navigator 4 был приведен как пример неудачной перезаписи. Новый механизм компоновки ( Gecko ) разрабатывался независимо от Navigator и не мог легко интегрироваться с кодом Navigator; поэтому сам Navigator был переписан для нового движка, нарушив многие существующие функции и отложив выпуск на несколько месяцев. Между тем Microsoft сосредоточилась на постепенных улучшениях Internet Explorer и не столкнулась с такими же препятствиями. [3] [6] По иронии судьбы, сам Navigator был успешным переписыванием NCSA Mosaic для чистых помещений под надзором разработчиков этой программы. См. Браузерные войны .

См. Также [ править ]

Некоторые проекты, в истории которых упоминаются крупные переписывания:

Ссылки [ править ]

  1. ^ Спольски, Джоэл. «Вещи, которые нельзя делать, часть I» . Джоэл о программном обеспечении . Проверено 23 января 2015 .
  2. ^ Ronkes Agerbeek, Joost (15 апреля 2005). «Никогда не переписывайте код с нуля» . Архивировано из оригинального 10 -го октября 2008 года . Проверено 11 сентября 2008 .
  3. ^ a b Спольски, Джоэл (6 апреля 2000 г.). «Вещи, которые нельзя делать» . Проверено 11 сентября 2008 .
  4. ^ Завински, Джейми . «Каскад невнимательных подростков» . Проверено 11 сентября 2008 .
  5. Тилли, Бен (29 сентября 2001 г.). «Переписывание с нуля огромной кодовой базы» . Проверено 11 сентября 2008 .
  6. ^ Завински, Джейми (31 марта 1999). «отставка и вскрытие» . Проверено 11 сентября 2008 .

Внешние ссылки [ править ]

  • RewriteCodeFromScratch на C2 Wiki
  • Вещи, которые нельзя делать, часть I , Джоэл Спольски