Является ли научный код достаточно другой областью, чтобы игнорировать общие стандарты кодирования?
Нет, это не так.
Исследовательский код часто «выбрасывают» и пишут люди, которые не являются разработчиками по образованию, какими бы сильными они ни были. Некоторый код исследования, который я написал, заставил бы меня плакать . Но это сработало!
Одна вещь, чтобы рассмотреть, является привратниками к проектам, управляет тем, что включено Если крупный проект начался как проект академического / исследовательского кода, в конечном итоге работает, и теперь это беспорядок, кто-то должен взять на себя инициативу по его реорганизации.
Требуется много усилий для рефакторинга существующего кода, который не вызывает проблем. Особенно, если это вообще для конкретного домена или не имеет тестов. Вы увидите, что у OpenCV есть руководство по стилю, которое является очень полным, даже если не идеальным. Применять это задним числом ко всему существующему коду? То есть .. не для слабонервных.
Это еще сложнее, если весь этот код работает. Потому что это не сломано. Зачем это исправлять?
Все же эти проекты процветают, поддерживаются и широко используются!
Это ответ, в некотором смысле. Рабочий код все еще полезен, и поэтому он более вероятен.
Это может быть беспорядок, особенно на начальном этапе. Некоторые из этих проектов, вероятно, начинались как одноразовый проект, который «не нужно было бы повторно использовать никогда и можно было бы выбросить».
Также учтите, что если вы реализуете сложный алгоритм, может иметь смысл иметь более крупные методы, потому что вы (и другие, знакомые с научной стороной) можете концептуально лучше понять алгоритм. Моя дипломная работа была связана с оптимизацией. Иметь логику основного алгоритма в качестве одного из методов было гораздо легче понять, чем пытаться разбить его на части. Это определенно нарушало правило «7 строк на метод», но это также означало, что другой исследователь мог посмотреть на мой код и быстрее понять мои модификации алгоритма.
Если бы эта реализация была абстрагирована и разработана хорошо, эта прозрачность была бы потеряна для непрограммистов .
Другим ответчикам: Этот вопрос относится к кодовой базе библиотек с открытым исходным кодом для сложных вычислительных задач в одной или нескольких научных областях. Этот вопрос не о одноразовом коде. Пожалуйста, остановитесь на мгновение, чтобы убедиться, что вы понимаете каждый выделенный аспект, прежде чем писать ответ.
Я думаю, что люди часто думают, что все проекты с открытым исходным кодом начинаются со слов: «эй, у меня есть отличная идея для библиотеки, которая будет безумно популярна и будет использоваться тысячами / миллионами других», и тогда каждый проект происходит таким образом.
Реальность такова, что многие проекты начинаются и умирают. Смехотворно небольшой процент проектов «делают это» до уровня OpenCV или VTK и т. Д.
OpenCV начинался как исследовательский проект от Intel. Википедия описывает это как часть «серии проектов». Его первый не бета-релиз был в 2006 году, или через семь лет после его запуска. Я подозреваю, что изначально целью были осмысленные бета-версии, а не идеальный код.
Кроме того, «владение» OpenCV значительно изменилось. Это приводит к изменению стандартов, если все ответственные стороны не примут одинаковые стандарты и не будут соблюдать их на протяжении всего проекта.
Я также должен отметить, что OpenCV существовал в течение нескольких лет, прежде чем был опубликован Agile Manifesto, который вдохновляет Clean Code (а VTK почти 10). VTK был запущен за 17 лет до публикации Чистого кода (OpenCV был "только" за 9 лет до этого).