Насколько важна обратная совместимость? [закрыто]

StackOverflow https://stackoverflow.com/questions/306594

  •  08-07-2019
  •  | 
  •  

Вопрос

Когда вы рассматриваете возможность обновления инструмента разработки, насколько важна для вас обратная совместимость? Вы бы все еще купили Visual Studio 2010, если бы она потребовала значительных изменений в вашем исходном коде? Где для вас переломный момент с точки зрения обратной совместимости для новых функций?

Это было полезно?

Решение

Хотя вы задали этот вопрос с точки зрения разработчика, я думаю, что это будет более интересный вопрос в отношении программного обеспечения, которое вы разрабатываете. Поэтому я собираюсь ответить на этот вопрос. :)

Аппаратное и программное обеспечение, обратно совместимое (и, что более важно, совместимое с будущим), обеспечивает чувство безопасности для ваших пользователей, особенно при покупке или обновлении платформ, таких как Windows. Если не что иное, Windows известна своим тщательным вниманием к обратной совместимости. Вы можете запускать программы, написанные более десяти лет назад в Windows Vista, с небольшими проблемами, если они были «хорошо написаны». (т.е. не используйте недокументированные API).

С другой стороны, строгое внимание к обратной совместимости может связать вам руки, когда вы пытаетесь внедрить новые функции или революционизировать платформу. Apple знала, что у нее умирающая ОС, и одним из самых смелых шагов она купила NeXT и решила сделать NeXTSTEP новой MacOS. Одной из ключевых вещей, которые продавали люди на переходе, был обратно-совместимый слой Classic. Опять же, когда Apple решила перейти на чипы Intel, механизм запуска приложений PowerPC на Intel под названием Rosetta вместе с Universal Binaries позволил людям свободно перемещаться между PowerPC и Intel, не опасаясь потери приложений.

Одна интересная вещь заключается в том, что с переходом на Intel классическая среда исчезла, но на самом деле никому нет до этого дела, потому что у них были предыдущие 5 лет для перехода с Mac OS 9. Таким образом, в конечном итоге можно отказаться от поддержки устаревших систем до тех пор, пока так как у вас есть простой способ перехода на новую систему и у ваших пользователей достаточно времени для этого.

Другие советы

В инструменте разработки, если он не обеспечивает полной обратной совместимости с моим предыдущим кодом, я не куплю его и сомневаюсь, что кто-нибудь получит. Честно говоря, нет смысла. Если у меня уже есть компилятор, который работает, чтобы встроить мой исходный код в исполняемый код, который работает для меня, то я буду его использовать. Зачем менять мой код, чтобы он соответствовал тому, что явно для производителя инструментов не является стандартом? Если они принудительно изменяют исходный код с одной версии на другую, зачем им делать совместимую следующую версию?

Требуется 100% обратная совместимость с источником. Единственная ситуация, когда это не является общим требованием, - это когда несовместимые биты являются расширениями; изменения API, специфичные для данного инструмента, такие как плагины Eclipse и т. д. Даже в этом случае я хотел бы совместимости, но я понимаю, что этого нельзя ожидать полностью. Но если вы предоставляете API для разработки базовых приложений / инструментов и не можете заботиться о совместимости; тогда вы явно не серьезно относитесь к своим инструментам, и я не буду платить за них серьезные деньги.

Для домашних проектов обратная совместимость действительно не важна. Для офиса / предприятия это абсолютно критично.

Это зависит от того, какие среды вам нужно поддерживать и какие сторонние инструменты используются, которые могут быть или не быть совместимыми.

Например, там, где я работаю, мы обновили всех до VS2008 с VS2005, за исключением нашей группы BI, поскольку инструменты SQL Server BI не были совместимы с VS2008. После обновления они обновились до VS2008.

Рассматривая VS с особой стороны, имейте в виду, что VS2008 может быть нацелен на .NET 2.0, .NET 3.0 и .NET 3.5. Хитрость заключается в том, чтобы понять, что на самом деле он нацелен на .NET 2.0 SP1 и .NET 3.0 SP1. Таким образом, обновление IDE не должно требовать внесения изменений в ваш код.

В genreal, если вы разрабатываете платформу, которая будет постоянно использоваться многими другими пользователями для создания своих собственных продуктов, и вы планируете разрабатывать приложение в течение длительного времени, тогда это важно. Посмотрите PHP, Python, Eclipse и другие проекты с открытым исходным кодом, которые придают большое значение обратной совместимости. Это также важно при разработке сервисов или других открытых API, используемых в n-уровневой архитектуре. Все приложения на предприятии могут ломаться все время, когда вы меняете свои услуги.

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

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

Я думаю, что если мы с нетерпением ждем лучшего мира, мы должны быть открыты к постоянным изменениям, пока эта отрасль не станет достаточно зрелой. (Может не случиться в нашей жизни, хотя :))

Определить "существенные изменения". Я бы пошел на это, если бы изменения могли быть сделаны с помощью тщательно продуманного " поиска & amp; заменить & Quot; даже если они были обширными.

Однако именно это я сделал бы. Любая компания, на которую я работал, возражала бы против любых изменений в существующем коде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top