предисловие
Это действительно непростая задача, и есть много причин, чтобы ее покрыть. Поэтому я смиренно предлагаю это как всеобъемлющее руководство для вашей команды с указателями на соответствующие инструменты и учебные материалы.
Помните: это руководящие принципы , и как таковые они предназначены для принятия, адаптации или исключения в зависимости от обстоятельств.
Осторожно: сброс всего этого в одну команду скорее всего провалится. Вы должны попытаться подобрать элементы, которые дадут вам лучший результат, и вводить их медленно, по одному за раз.
Примечание: не все это относится непосредственно к системам визуального программирования, таким как G2. Для более подробной информации о том, как с этим справиться, смотрите раздел Дополнение в конце.
Резюме для нетерпеливых
- Определить жесткую структуру проекта с помощью:
- шаблоны проектов ,
- соглашения по кодированию ,
- знакомые системы сборки ,
- и наборы руководств по использованию вашей инфраструктуры и инструментов.
- Установите хороший SCM и убедитесь, что они знают, как его использовать.
- Укажите им хорошие IDE для своей технологии и убедитесь, что они знают, как их использовать.
- Внедрить средства проверки качества кода и автоматические отчеты в системе сборки.
- Соедините систему сборки с системами непрерывной интеграции и непрерывного контроля .
- С помощью вышеперечисленного определите качество кода «горячих точек» и рефакторинг .
Теперь для длинной версии ... Осторожно, приготовьтесь!
Жесткость (часто) хороша
Это противоречивое мнение, поскольку жесткость часто рассматривается как сила, действующая против вас. Это верно для некоторых этапов некоторых проектов. Но как только вы воспринимаете это как структурную опору, структуру, которая устраняет догадки, это значительно сокращает количество потерянного времени и усилий. Заставь это работать на тебя, а не против тебя.
Жесткость = Процесс / Процедура .
Разработка программного обеспечения нуждается в хорошем процессе и процедурах по тем же причинам, по которым химические заводы или фабрики имеют руководства, процедуры, учения и руководства по чрезвычайным ситуациям: предотвращение плохих результатов, повышение предсказуемости, максимизация производительности ...
Жесткость приходит в умеренности, хотя!
Жесткость структуры проекта
Если у каждого проекта своя собственная структура, вы (и новички) теряетесь и должны каждый раз открывать их с нуля. Вы не хотите этого в профессиональном магазине программного обеспечения, и вы не хотите этого в лаборатории.
Жесткость систем сборки
Если каждый проект выглядит по- разному, есть большая вероятность, что они также
строятся по-разному . Сборка не должна требовать слишком много исследований или слишком много догадок. Вы хотите быть в состоянии сделать каноническую вещь и не нужно беспокоиться о специфике: configure; make install
, ant
,
mvn install
, и т.д. ...
Повторное использование одной и той же системы сборки и ее развитие со временем также обеспечивает постоянный уровень качества.
Вам нужно быстро README
указать специфику проекта и изящно направить пользователя / разработчика / исследователя, если таковой имеется.
Это также значительно облегчает другие части вашей инфраструктуры сборки, а именно:
Поэтому держите свою сборку (например, свои проекты) в актуальном состоянии, но со временем делайте ее более строгой и более эффективной при сообщении о нарушениях и плохих практиках.
Не изобретайте велосипед и повторно используйте то, что вы уже сделали.
Рекомендуемое чтение:
Жесткость в выборе языков программирования
Вы не можете ожидать, особенно в исследовательской среде, от того, что все команды (и тем более все разработчики) используют один и тот же язык и технологический стек. Однако вы можете определить набор «официально поддерживаемых» инструментов и поощрять их использование. Остальное, без хорошего обоснования, не должно быть разрешено (кроме прототипирования).
Сохраняйте свой технический стек простым, а обслуживание и широту необходимых навыков - как минимум: сильное ядро.
Жесткость кодирования конвенций и руководящих принципов
Соглашения и руководства по кодированию - это то, что позволяет вам развивать как личность в команде, так и общий язык . Вы не хотите ошибаться в terra incognita каждый раз, когда открываете исходный файл.
Бессмысленные правила, которые усложняют жизнь или запрещают простоту действий в той степени, в которой им отказывают в совершении, основанном на простых нарушениях, являются бременем. Тем не мение:
хорошо продуманный набор основных правил устраняет многие жалобы и размышления: никто не должен сломаться ни при каких обстоятельствах;
и набор рекомендуемых правил обеспечивает дополнительное руководство.
Персональный подход. Я агрессивен, когда дело доходит до конвенций кодирования, некоторые даже говорят нацистский , потому что я верю в то, что у меня будет
лингва франка , узнаваемый стиль для моей команды. Когда проверенный код становится зарегистрированным, он выделяется как герпес на лице голливудской звезды: он запускает обзор и действие автоматически. На самом деле, я иногда заходил так далеко, что защищал использование хуков предварительной фиксации для отклонения несоответствующих коммитов. Как уже упоминалось, это не должно быть чересчур сумасшедшим и мешать производительности: оно должно стимулировать это. Вводите их медленно, особенно в начале. Но это гораздо предпочтительнее, чем тратить столько времени на исправление неисправного кода, что вы не можете работать с реальными проблемами.
Некоторые языки даже применяют это в дизайне:
- Java предназначался для уменьшения количества скучной хрени, которую вы можете написать с ее помощью (хотя, несомненно, многим это удается).
Блочная структура Python с отступом - еще одна идея в этом смысле.
Go, с его gofmt
инструментом, который полностью отнимает любые споры и усилия ( и эго! ), Присущие стилю: беги, gofmt
прежде чем совершить.
Убедитесь, что код гнили не может проскользнуть. Соглашения о коде , постоянная интеграция и постоянный контроль , парное программирование и обзоры кода - ваш арсенал против этого демона.
Кроме того, как вы увидите ниже, код - это документация , и это еще одна область, где соглашения поощряют удобочитаемость и ясность.
Жесткость документации
Документация идет рука об руку с кодом. Сам код является документацией. Но должны быть четкие инструкции о том, как создавать, использовать и поддерживать вещи.
Использование единой точки контроля для документации (например, WikiWiki или DMS) - это хорошо. Создайте места для проектов, места для более случайного подшучивания и экспериментов. Пусть во всех пробелах используются общие правила и соглашения. Попробуйте сделать это частью командного духа.
Большая часть рекомендаций, относящихся к коду и инструментам, также относится и к документации.
Жесткость в комментариях к коду
Комментарии к коду, как уже упоминалось выше, также являются документацией. Разработчики любят выражать свои чувства по поводу своего кода (в основном гордость и разочарование, если вы спросите меня). Поэтому они нередко выражают их недвусмысленно в комментариях (или даже в коде), когда более формальный фрагмент текста мог бы передать то же значение с меньшим количеством ругательств или драмы. Это нормально, если вы пропустите несколько забавных и исторических причин: это также является частью развития командной культуры . Но очень важно, чтобы все знали, что приемлемо, а что нет, и этот комментарий - это просто
шум .
Жесткость в журналах коммитов
Журналы коммитов не являются раздражающим и бесполезным «шагом» жизненного цикла вашего SCM: вы НЕ пропускаете его, чтобы вернуться домой вовремя или приступить к следующему заданию, или догнать приятелей, которые ушли на обед. Они имеют значение, и, как (большинство) хорошее вино, чем больше времени проходит, тем ценнее они становятся. Так что делай их правильно. Я поражен, когда вижу, как коллеги пишут однострочники для гигантских коммитов или для неочевидных хаков.
Коммиты выполняются по причине, и эта причина не всегда четко выражена вашим кодом и одной строкой журнала фиксации, которую вы ввели. Это больше, чем это.
Каждая строка кода имеет историю и историю . Различия могут рассказать его историю, но вы должны написать ее историю.
Почему я обновил эту строку? -> Потому что интерфейс изменился.
Почему интерфейс изменился? -> Потому что библиотека L1, определяющая его, была обновлена.
Почему была обновлена библиотека? -> Поскольку библиотека L2, которая нам нужна для функции F, зависит от библиотеки L1.
А что за черта Х? -> См. Задачу 3456 в трекере проблем.
Это не мой выбор SCM, и, возможно, не лучший для вашей лаборатории; но Git
понимает это правильно и пытается заставить вас писать хорошие журналы больше, чем большинство других систем SCM, используя short logs
и
long logs
. Свяжите идентификатор задачи (да, он вам нужен) и оставьте общее резюме для shortlog
, и разверните в длинном журнале: напишите историю изменений .
Это журнал: он здесь, чтобы отслеживать и записывать обновления.
Полезное правило. Если вы позднее что-то искали об этом изменении, вероятно, ваш журнал ответит на ваш вопрос?
Проекты, Документация и Кодекс ЖИВЫ
Держите их в синхронизации, иначе они больше не образуют эту симбиотическую сущность. Он творит чудеса, когда у вас есть:
- очистить журналы коммитов в вашем SCM, со ссылками на идентификаторы задач в вашем трекере,
- где сами билеты этого трекера ссылаются на наборы изменений в вашем SCM (и, возможно, на сборки в вашей системе CI),
- и система документации, которая ссылается на все это.
Код и документация должны быть связными .
Жесткость в тестировании
Эмпирические правила:
- Любой новый код должен сопровождаться (как минимум) модульными тестами.
- Любой реорганизованный устаревший код должен сопровождаться модульными тестами.
Конечно, это нужно:
- на самом деле проверить что-то ценное (или они являются пустой тратой времени и энергии),
- быть хорошо написанным и прокомментированным (как любой другой код, который вы регистрируете).
Они также являются документацией и помогают обрисовать в общих чертах контракт вашего кода. Особенно если вы используете TDD . Даже если вы этого не сделаете, они нужны вам для вашего спокойствия. Они являются вашей сетью безопасности, когда вы добавляете новый код (обслуживание или функцию) и сторожевую башню для защиты от гниения кода и сбоев окружающей среды.
Конечно, вы должны пойти дальше и иметь интеграционные тесты и
регрессионные тесты для каждой воспроизводимой ошибки, которую вы исправляете.
Жесткость в использовании инструментов
Это нормально для случайного разработчика / ученого, желающего попробовать какую-нибудь новую статическую проверку источника, сгенерировать график или модель, используя другой, или внедрить новый модуль, используя DSL. Но лучше всего, если есть канонический набор инструментов, который все члены команды должны знать и использовать.
Кроме того, пусть члены используют то, что они хотят, если они ВСЕ:
- продуктивный ,
- НЕ требует регулярной помощи
- НЕ регулярно приспосабливаясь к вашей общей инфраструктуре ,
- НЕ разрушая вашу инфраструктуру (изменяя общие области, такие как код, система сборки, документация ...),
- НЕ влияет на работу других ,
- Умеет своевременно выполнять любую задачу по запросу .
Если это не так, то принудите их вернуться к значениям по умолчанию.
Жесткость против универсальности, адаптивности, прототипирования и чрезвычайных ситуаций
Гибкость может быть хорошей. Позволить кому - то иногда использовать хак, быстро-н-грязный подход, или любимый инструмент для домашних животных , чтобы получить работу
в порядке. НИКОГДА не позволяйте этому стать привычкой, и НИКОГДА не позволяйте этому коду становиться фактической базой кода для поддержки.
Вопросы командного духа
Развивайте чувство гордости в своей кодовой базе
- Развивайте чувство гордости за код
- Используйте настенные панели
- таблица лидеров для непрерывной интеграции игры
- настенные панели для управления проблемами и подсчета дефектов
- Используйте систему отслеживания проблем / ошибок
Избегайте обвинительных игр
- НЕОБХОДИМО использовать игры «Непрерывная интеграция» и «Непрерывная инспекция»: это способствует хорошей и продуктивной конкуренции .
- Следите за дефектами: это просто хорошая уборка.
- ДЕЙСТВУЙТЕ выявление первопричин : это просто процессы будущего.
- НО НЕ возлагайте вину : это контрпродуктивно.
Речь идет о кодексе, а не о разработчиках
Заставьте разработчиков осознавать качество своего кода, НО заставьте их воспринимать код как отдельную сущность, а не как расширение себя, которое нельзя критиковать.
Это парадокс: вы должны поощрять программирование без эго для здорового рабочего места, но полагаться на эго в мотивационных целях.
От ученого до программиста
Люди, которые не ценят и не гордятся кодом, не производят хороший код. Чтобы это свойство появилось, им нужно выяснить, насколько ценным и интересным оно может быть. Одного профессионализма и желания делать добро недостаточно: для этого нужна страсть. Поэтому вам нужно превратить своих ученых в
программистов (в широком смысле).
В комментариях кто-то утверждал, что после 10-20 лет работы над проектом и его кодом любой может почувствовать привязанность. Может быть, я ошибаюсь, но я полагаю, что они гордятся результатами кода и работой и ее наследием, а не самим кодом или актом его написания.
Исходя из опыта, большинство исследователей считают кодирование необходимостью или, в лучшем случае, забавным отвлечением. Они просто хотят, чтобы это сработало. Тех, кто уже достаточно разбирается в этом и интересуется программированием, гораздо легче убедить в принятии лучших практик и переключении технологий. Вы должны получить их на полпути.
Ведение кода является частью исследовательской работы
Никто не читает дерьмовые исследования. Вот почему они рецензируются, проверяются, уточняются, переписываются и утверждаются снова и снова, пока не будут признаны готовыми к публикации. То же самое относится к диссертации и кодовой базе!
Дайте понять, что постоянный рефакторинг и обновление кодовой базы предотвращает гниение кода и уменьшает техническую задолженность, а также облегчает повторное использование в будущем и адаптацию работы для других проектов.
Почему все это??!
Почему мы беспокоимся обо всем вышеперечисленном? Для качества кода . Или это
качественный код ...?
Эти рекомендации направлены на то, чтобы направить вашу команду к этой цели. Некоторые аспекты делают это, просто показывая им путь и позволяя им делать это (что намного лучше), а другие берут их за руку (но именно так вы обучаете людей и развиваете привычки).
Как узнать, когда цель достижима?
Качество измеримо
Не всегда количественно, но это измеримо . Как уже упоминалось, вам нужно развивать чувство гордости за свою команду, и показ прогресса и хороших результатов является ключевым. Регулярно измеряйте качество кода и показывайте прогресс между интервалами и то, как это важно. Сделайте ретроспективу, чтобы поразмышлять о том, что было сделано, и как это сделало вещи лучше или хуже.
Есть отличные инструменты для постоянного осмотра . Сонар является популярным в мире Java, но он может адаптироваться к любым технологиям; и есть много других. Держите свой код под микроскопом и ищите этих надоедливых жучков и микробов.
Но что, если мой код уже дерьмо?
Все вышеперечисленное - это весело и мило, как поездка в Never Land, но это не так легко сделать, когда у вас уже есть (куча парных и вонючих) дерьмовых кодов, и команда не хочет меняться.
Вот секрет: вам нужно с чего-то начать .
Личный анекдот: В проекте мы работали с базой кода, изначально весившей 650 000+ Java LOC, 200 000+ строк JSP, 40 000+ JavaScript LOC и 400+ МБ двоичных зависимостей.
Примерно через 18 месяцев это 500 000 Java LOC (MOSTLY CLEAN) , 150 000 строк JSP и 38 000 JavaScript LOC, с зависимостями до 100 МБ (а их больше нет в нашей SCM!).
Как мы это сделали? Мы только что сделали все вышеперечисленное. Или старался.
Это командное усилие, но мы медленно внедряем в наши технологические регламенты и инструменты для мониторинга частоты сердечных сокращений нашего продукта, одновременно поспешно сокращая «жирный»: дерьмовый код, бесполезные зависимости ... Мы не останавливали всю разработку, чтобы сделайте это: у нас бывают периоды относительного покоя и тишины, когда мы можем сойти с ума от кодовой базы и разорвать ее на части, но большую часть времени мы делаем все это, применяя режим «пересмотра и рефакторинга» каждый раз, когда получаем : во время сборок, во время обеда, во время спринтов по исправлению ошибок, во второй половине дня в пятницу ...
Были некоторые большие «работы» ... Одним из них было переключение нашей системы сборки с гигантской сборки Ant из 8500+ XML LOC на многомодульную сборку Maven. Затем мы имели:
- четкие модули (или, по крайней мере, это было уже намного лучше, и у нас все еще большие планы на будущее),
- автоматическое управление зависимостями (для простоты обслуживания и обновления, а также для удаления ненужных ошибок),
- более быстрые, простые и воспроизводимые сборки,
- ежедневные отчеты о качестве.
Другим было внедрение «поясов утилит», хотя мы пытались уменьшить зависимости: Google Guava и Apache Commons уменьшают ваш код и значительно уменьшают количество ошибок в вашем коде.
Мы также убедили наш ИТ-отдел, что, возможно, использование наших новых инструментов (JIRA, Fisheye, Crucible, Confluence, Jenkins) было лучше, чем имеющиеся на месте. Нам все еще нужно было иметь дело с некоторыми из тех, кого мы презирали (QC, Sharepoint и SupportWorks ...), но это был общий улучшенный опыт, оставив еще немного места.
И каждый день теперь существует от одного до десятков коммитов, которые занимаются только исправлением и рефакторингом. Время от времени мы ломаем вещи (вам нужны юнит-тесты, и вам лучше написать их, прежде чем убирать вещи), но в целом выгода для нашего морального духа и для продукта была огромной. Мы получаем там одну долю процента качества кода за раз. И это интересно видеть, как это увеличивается !!!
Примечание: опять же, жесткость должна быть поколеблена, чтобы освободить место для новых и лучших вещей. В моем анекдоте наш ИТ-отдел отчасти прав, пытаясь навязать одни вещи нам, а другие - нет. Или, может быть, они были правы . Вещи меняются. Докажите, что это лучший способ повысить вашу производительность. Пробные версии и прототипы здесь для этого.
Сверхсекретный инкрементный цикл рефакторинга кода спагетти для потрясающего качества
+-----------------+ +-----------------+
| A N A L Y Z E +----->| I D E N T I F Y |
+-----------------+ +---------+-------+
^ |
| v
+--------+--------+ +-----------------+
| C L E A N +<-----| F I X |
+-----------------+ +-----------------+
Если у вас есть несколько качественных инструментов в вашем наборе инструментов:
Проанализируйте свой код с помощью контроллеров качества кода.
Линтеры, статические анализаторы или что там у вас.
Определите ваши критические горячие точки и низко висящие фрукты .
Нарушения имеют уровни серьезности, и большие классы с большим количеством высокоуровневых классов имеют большой красный флаг: как таковые, они появляются в качестве «горячих точек» на видах радиатора / тепловой карты.
Исправьте горячие точки в первую очередь.
Это максимизирует ваше влияние в короткие сроки, поскольку они имеют наибольшую ценность для бизнеса. В идеале критические нарушения следует устранять, как только они появляются, поскольку они являются потенциальными уязвимостями безопасности или причинами сбоев и представляют высокий риск возникновения ответственности (а в вашем случае - плохой работы лаборатории).
Устраните нарушения низкого уровня с помощью автоматических разверток кодовой базы .
Это улучшает отношение сигнал / шум, так что вы сможете увидеть значительные нарушения на радаре по мере их появления. Вначале часто возникает большая армия мелких нарушений, если о них никогда не позаботились, а ваша кодовая база осталась без внимания. Они не представляют реального «риска», но они ухудшают читабельность и удобство сопровождения кода. Исправляйте их, когда вы встречаете их во время работы над заданием, или с помощью больших квестов с автоматической очисткой кода, если это возможно. Будьте осторожны с большими автоматическими развертками, если у вас нет хорошего набора тестов и системы интеграции. Обязательно договоритесь с коллегами о правильном времени для их запуска, чтобы минимизировать раздражение.
Повторяйте, пока не будете удовлетворены.
Что, в идеале, никогда не должно быть, если это все еще активный продукт: он будет продолжать развиваться.
Быстрые Подсказки для Хорошего Хозяйства
В режиме исправления на основании запроса поддержки клиентов:
- Обычно лучше НЕ пытаться решить другие проблемы, так как вы можете неохотно вводить новые.
- Сделайте это в стиле SEAL: войдите, убейте ошибку, выйдите и отправьте свой патч. Это хирургический и тактический удар.
Но во всех остальных случаях , если вы открываете файл, сделайте своим долгом:
- обязательно: просмотрите его (сделайте заметки, подайте отчет о проблеме),
- возможно: очистить это (очистка стиля и незначительные нарушения),
- в идеале: реорганизовать его (реорганизовать большие секции и их соседей).
Только не отвлекайтесь на то, чтобы тратить неделю на переход от файла к файлу, и в результате вы получите множество изменений, охватывающих несколько функций и модулей, - это усложнит отслеживание в будущем. Одна проблема в коде = один билет в вашем трекере. Иногда набор изменений может повлиять на несколько билетов; но если это случается слишком часто, то вы, вероятно, делаете что-то не так.
Приложение: Управление средами визуального программирования
Стеновые сады на заказ систем программирования
Многочисленные системы программирования, такие как OP G2, - разные звери ...
Нет исходного кода
Часто они не дают вам доступа к текстовому представлению вашего исходного «кода»: он может храниться в проприетарном двоичном формате или, возможно, хранит вещи в текстовом формате, но скрывает их от вас. Созданные на заказ системы графического программирования на самом деле не редкость в исследовательских лабораториях, поскольку они упрощают автоматизацию повторяющихся рабочих процессов обработки данных.
Нет инструментов
Помимо их собственного, это. Вас часто ограничивают их среда программирования, их собственный отладчик, их собственный интерпретатор, их собственные инструменты документирования и форматы. Они представляют собой
огороженные сады , за исключением тех случаев, когда они в конечном итоге заинтересуют кого-то, кто достаточно мотивирован, чтобы перепроектировать их форматы и создать внешние инструменты - если лицензия это позволяет.
Недостаток документации
Довольно часто это нишевые системы программирования, которые используются в довольно закрытых средах. Люди, которые их используют, часто подписывают NDA и никогда не говорят о том, что они делают. Сообщества программистов для них редки. Так что ресурсов мало. Вы застряли с вашей официальной ссылкой, и это все.
Ирония (и часто разочарование) состоит в том, что все, что делают эти системы, очевидно, может быть достигнуто с помощью основных и универсальных языков программирования, и, вероятно, более эффективно. Но это требует более глубоких знаний программирования, в то время как вы не можете ожидать, что ваш биолог, химик или физик (чтобы назвать несколько) достаточно знал о программировании, и еще меньше, чтобы иметь время (и желание), чтобы реализовать (и поддерживать) сложные системы, которые могут быть или не быть долгоживущими. По той же причине, по которой мы используем DSL, у нас есть эти специальные системы программирования.
Персональный анекдот 2:На самом деле, я работал над одним из них сам. Я не связывал запрос с ОП, но мой проект представлял собой набор взаимосвязанных больших программ для обработки и хранения данных (в основном для исследований в области биоинформатики, здравоохранения и косметики, а также для бизнеса). интеллект или любая область, подразумевающая отслеживание больших объемов исследовательских данных любого рода и подготовку рабочих процессов обработки данных и ETL). Одним из этих приложений была, довольно просто, визуальная среда IDE, в которой использовались обычные функции: интерфейсы перетаскивания, рабочие версии проектов (использование текстовых и XML-файлов для хранения метаданных), множество подключаемых драйверов к разнородным источникам данных и визуальные элементы. Canvas для проектирования конвейеров для обработки данных из N источников данных и, в конце концов, для создания M преобразованных выходных данных, и возможные блестящие визуализации и сложные (и интерактивные) онлайн-отчеты. Ваша типичная система визуального программирования на заказ, страдающая от небольшого синдрома NIH под предлогом разработки системы, адаптированной к потребностям пользователей.
И, как и следовало ожидать, это хорошая система, достаточно гибкая для своих нужд, хотя иногда и слишком сложная, поэтому вы задаетесь вопросом «почему бы не использовать вместо нее инструменты командной строки?», И, к сожалению, всегда лидирующая в средних по размеру команды, работающие над большими проектами, используют множество разных людей с разными «лучшими» практиками.
Отлично, мы обречены! - Что мы делаем с этим?
Ну, в конце концов, все вышесказанное все еще имеет место. Если вы не можете извлечь большую часть программирования из этой системы, чтобы использовать больше основных инструментов и языков, вам просто нужно адаптировать ее к ограничениям вашей системы.
О версии и хранении
В конце концов, вы почти всегда можете создавать версии , даже в самых стесненных условиях. Чаще всего эти системы все еще имеют свои собственные версии (которые, к сожалению, часто довольно просты, и просто предлагают вернуться к предыдущим версиям без особой наглядности, просто сохраняя предыдущие снимки). Он не совсем использует дифференциальные наборы изменений, как это может сделать ваш SCM, и, вероятно, он не подходит для нескольких пользователей, которые подают изменения одновременно.
Но, тем не менее, если они предоставляют такую функциональность, возможно, ваше решение состоит в том, чтобы следовать нашим любимым отраслевым стандартам, приведенным выше, и перенести их в эту систему программирования !!
Если система хранения представляет собой базу данных, она, вероятно, предоставляет функции экспорта или может создавать резервные копии на уровне файловой системы. Если он использует собственный двоичный формат, возможно, вы можете просто попытаться создать версию с VCS, которая имеет хорошую поддержку двоичных данных. У вас не будет детального контроля, но, по крайней мере, вы будете защищены от катастроф и будете в определенной степени соответствовать требованиям аварийного восстановления.
О тестировании
Реализуйте свои тесты в самой платформе и используйте внешние инструменты и фоновые задания для создания регулярных резервных копий. Вполне возможно, вы запускаете эти тесты так же, как вы запускаете программы, разработанные с помощью этой системы программирования.
Конечно, это хакерская работа и определенно не соответствует стандарту того, что является обычным для «нормального» программирования, но идея состоит в том, чтобы адаптироваться к системе, пытаясь сохранить видимость профессионального процесса разработки программного обеспечения.
Дорога длинная и крутая ...
Как всегда в нишевых средах и специализированных системах программирования, и, как мы показали выше, вы имеете дело со странными форматами, только с ограниченным (или совершенно несуществующим) набором, возможно, неуклюжих инструментов и пустотой вместо сообщества.
Рекомендация: постарайтесь максимально реализовать приведенные выше рекомендации вне вашей системы программирования. Это гарантирует, что вы можете положиться на «общие» инструменты, которые имеют надлежащую поддержку и поддержку сообщества.
Обходной путь: Когда это не вариант, попробуйте модифицировать эту глобальную структуру в свою «коробку». Идея состоит в том, чтобы наложить эту схему лучших отраслевых стандартов на вашу систему программирования и извлечь из нее максимум пользы. Совет по-прежнему актуален: определите структуру и лучшие практики, поощряйте соответствие.
К сожалению, это подразумевает, что вам, возможно, придется погрузиться и проделать огромную работу. Так...
Известные последние слова и смиренные просьбы:
- Документируйте все, что вы делаете.
- Поделитесь своим опытом.
- Open Source любой инструмент, который вы пишете.
Делая все это, вы будете:
- не только увеличить ваши шансы получить поддержку от людей в подобных ситуациях,
- но также помогайте другим людям и стимулируйте обсуждение вашего технологического стека.
Кто знает, может быть в самом начале нового энергичного сообщества Obscure языка X . Если их нет, начните!
Может быть, внутри красиво , но пока никто не догадывается , так что помогите снять эту уродливую стену и пусть другие заглянут!