«Если они с самого начала выполнили свою работу очень хорошо, большую часть, в противном случае небольшую часть».
Строгие языки показывают эту черту. В языках Никла Вирта мало что изменилось, потому что они были спланированы точно. (Это на самом деле изменилось в последнее время для Delphi, и изменится с новой версией универсального развертывания.)
Конечно, в этом есть и обратная сторона. Принятие решения о том, что исходный код достаточно хорош, например, в случае Microsoft Windows или прекрасных приложений, таких как ACDSee, текстовые редакторы или хорошо известные приложения командной строки «дух Linux».
Даже если эти приложения могут показаться неуклюжими тем, кто, возможно, вообще их не любил, они демонстрируют хорошо спланированную черту, а также четко определенный набор функций; даже если у них нет наворотов, это может быть предпочтительнее; они делают то, что на ладони, обратная совместимость великолепна, и, вероятно, продолжит хорошо функционировать в будущем.
Photoshop будет иметь 90% того же кода, начиная с 5.0, если вы будете использовать набор функций. ; P это делает? Нет почему? Продажа обновлений. Вы не можете сделать больше с этим сегодня.
Набор функций файлового менеджера, вплоть до того момента, когда он хочет использовать FTP, Интернет и облако, практически одинаков для любой платформы на протяжении десятилетий. Единственная причина, по которой такое приложение до сих пор не достигло уровня 1.0, связана с плохим планированием, прихотью, необходимостью обновления - и хотя бы в небольшой степени изменением мира вокруг приложения.
Ответ заключается в том, что некоторые гемы остаются на уровне 1.0 или 1.0.x, потому что разработчик выбрал набор функций, завершил программу без ошибок и либо не получает прибыли от бесконечного добавления материала и исправления ошибок в добавленном материале, либо переехал на развивать больше драгоценных камней.
Все остальное вряд ли останется где-то рядом с кодом в 1.0. И почему бы вам не переписать приложение, если у вас есть отличная идея? Вы должны, это весело, чтобы код! :) За исключением того, что произошло во многих современных программных продуктах. Изменения ради изменений (продажи), не мотивированные набором функций, и, в меньшей степени, обновления для соответствия меняющимся платформам, - это самый важный момент.
И в этом супе взаимодействующих частей постоянно обновляемого программного обеспечения немногие кодовые базы избегают пересмотров. Некоторые все еще придерживаются мечты о фондах и модульности (и не выпускают преждевременно), но подавляющее большинство застряло в цикле релиз-исправление-обновление.