Это должны были быть комментарии, но я не могу поместить их целиком в эту маленькую коробочку ...
Я пишу код научных исследований, особенно в области биоинформатики. Конечно, в науке результаты должны быть воспроизводимыми. Люди, которые не участвуют в проекте на регулярной основе и не понимают инфраструктуру
Вы говорите об инфраструктуре здесь, в программировании, верно?
подробно может законно захотеть увидеть мой код для воспроизведения результатов. Проблема в том, что создание самодостаточного кода, достаточного для того, чтобы легко дать / объяснить такому человеку, похоже, сильно ограничивает возможное повторное использование.
Я не понимаю. Почему они не смогут воспроизвести результаты?
Или вы хотели сказать, что они хотят повторно использовать ваши программы?
Часто удобно выделять функциональность, которая использовалась в нескольких связанных проектах, в личную библиотеку, но неудобно помещать указанную библиотеку в 5000 строк (по общему признанию, плохо документированы, поскольку она не предназначена для код производства / выпуска), который не имеет ничего общего с имеющейся проблемой для человека, который хочет воспроизвести результат очень быстро.
(кроме «воспроизведения результатов», но это может быть языковой проблемой на моей стороне); Спросите себя, сколько людей на самом деле собираются использовать ваши библиотеки. Если, как и во многих случаях, только один или два, я не считаю разумным менять это ради них.
Обычно я делаю библиотеки для личного пользования так, как мне удобно. Приспосабливая их к ним, просто ради их удобства (то есть без оплаты специально за это, что, я полагаю, вы не платите), на самом деле это еще один способ сказать: «Мне не хотелось писать свое, и Мне не хочется думать о том, как ты сочинил свое, поэтому иди и реструктурируй его, чтобы я мог легко использовать его, не задумываясь ".
Часто удобно, чтобы в вашей системе был установлен набор из нескольких ключевых библиотек, которые можно было бы использовать, не задумываясь, но это не удобно для объяснения тому, кто в первую очередь является ученым, а не программистом. как ты все это настроил. Это особенно верно, если вы сами не помните некоторые детали. (Обратите внимание, что эти детали являются техническими подробностями, которые не имеют ничего общего с наукой.)
Часто удобно хранить весь код для нескольких связанных аспектов исследовательского проекта в одной большой программе с множеством опций, а не писать полностью автономный код для каждой небольшой вариации / вещи, которую вы попробовали, но опять же, не удобно сваливать все это или объяснять это кому-то, кто просто хочет воспроизвести результат.
Конечно. Проблема с «научным кодированием» (насколько мне не нравится это выражение) состоит в том, что программа - это всего лишь инструмент в процессе работы над чем-то другим, то есть вы делаете это, не желая фактически содержать его, поскольку это ожидается изменяться по мере продолжения работы.
Какими способами можно решить эти проблемы, чтобы я мог повторно использовать код, но при этом позволил кому-то, кто хочет воспроизвести мои результаты, запустить мой код с разумными усилиями?
Разветвление кода в VCS для конкретных случаев, а затем предоставление кому-либо версии, наиболее близкой к той, которая им нужна, всегда работало для меня.