Я работаю в небольшой, независимой научной лаборатории в университете в Соединенных Штатах, и это пришло к моему уведомлению, что, по сравнению с большим количеством методов, которые якобы применены в промышленности, как ежедневный контроль в систему управления версиями, использование единственного IDE/редактора для всех языков (как emacs), и т.д., мы следуем за довольно дрянными практиками программирования.
Так, я думал о встрече всех моих программ, сценариев, и т.д., и создания оптимизированной среды для повышения производительности. Я хотел бы предложения от людей на Переполнении стека для того же. Вот мой основной план.: Я использую MATLAB, C и сценарии Python, и я хотел бы отредактировать, скомпилировать их от единственного редактора и гарантировать управление правильной версией.
(вопросы/вещи, за которые я хотел бы предложения, курсивом),
1] Cygwin Установки, и заставляют это работать хорошо с Windows, таким образом, я могу использовать мерзавца или систему управления аналогичной версии (существует ли DVCS, который может работать непосредственно из окон CLI, таким образом, я могу пропустить шаг Cygwin?).
2] Настроенный emacs для работы с C, Python и файлами MATLAB, таким образом, я могу отредактировать и скомпилировать все три сразу от единственного редактора (говорят, emacs),
(Я не очень знаком с emacs меню, но являюсь там способом установить путь к компилятору для определенных языков? Я знаю, что могу Google это, но emacs документация оказалась очень трудной для меня читать до сих пор, таким образом, я ценил бы его, если бы кто-то сказал мне на простом языке),
3] Начните регистрироваться в коде в конце каждого дня или неполного рабочего дня, чтобы поддержать надлежащий путь прогресса моего кода (два вопроса),
можете Вы файлы контроля непосредственно от emacs?
существует ли путь к контролю файлы LabVIEW в DVCS как мерзавец?
Наконец, я хотел бы принести извинения за довольно неопределенную природу вопроса и надеяться, что я буду учиться задавать лучшие вопросы со временем. Я ценил бы его, если бы люди дали свои предложения, тем не менее, и точку к каким-либо ресурсам, которые могут помочь мне учиться.
1) И git, и mercurial будут работать под Windows нативно - нет необходимости в Cygwin - среде, которую я бы избегал, если это возможно.
2) Не понимаю, почему вы считаете, что должны использовать emacs.
3) Вы не проверяете код в определенное время суток или с определенной частотой - вы проверяете его, когда внесли явное изменение, которое было протестировано и работает. Или, если вы работаете над своей веткой, когда это удобно.
Здорово, что вы идете по этому маршруту. Вот несколько вещей, которые можно добавить к этому списку:
1) Добавьте тестирование в свой рабочий цикл. То есть, как только какой-то сегмент был написан, попросите других людей, которые над ним не работали, просмотреть код. Затем напишите тесты, чтобы убедиться, что новый код хорошо интегрируется с другим кодом и дает желаемые результаты, и, наконец, сделайте эти тесты частью процесса ночной сборки.
2) Начните процесс сборки за ночь. Или, по крайней мере, какой-то автоматизированный процесс, который перестраивает ваш код каждый раз, когда кто-то проверяет его. Пусть он запускает все ваши тесты для этой сборки.
Как упоминали другие, регистрация через регулярные промежутки времени не очень важна. Зарегистрируйтесь, когда вы достигли вехи (вы внесли изменение, которое работает с остальной частью кода, и оно правильно построено. Автоматизированные сборки гораздо важнее. Они подтверждают, что вы проверили все соответствующие изменения.
Я думаю, что вы можете быть немного смущены размещением системы управления версиями по сравнению с клиентами для управления версиями. Клиенты для CVS, SVN, Git и других практически повсеместно доступны для окон. Хостинг доступен от многих веб-хостинговых компаний. Это может быть хорошим вариантом,так как это также эффективно даст вам резервную копию вашей кодовой базы за ~ 100 $ / год. В качестве альтернативы вы можете просто загрузить сервер на бюджетный ПК и поместить его в шкаф где-нибудь, хотя стоимость электроэнергии, вероятно, столько же, сколько вы заплатили бы за хостинг.
Использование одной IDE для всех языков не важно вообще, важна согласованность в проектах одного языка. Все ваши проекты на одном языке, вероятно, должны иметь общий стандарт кодирования. Они также должны быть построены на одном и том же компиляторе и/или работать на одном интерпретаторе/виртуальной машине и иметь актуальные файлы проекта для любой IDE, которую вы используете (если применимо).
Попытка следовать каким-то лучшим практикам принесет вам много пользы, но вы можете обнаружить, что многие люди не очень заинтересованы в том, чтобы следовать им. Старайтесь рекламировать преимущества тонкими способами, чтобы не запугать своих коллег - если им понравится то, что они увидят, они могут со временем принять некоторые из ваших предложений.
Научная среда, где многие люди заботятся только о том, чтобы побыстрее закончить университет или получить одобрение своих заявок на финансирование, похоже, воспитывает ковбойский стиль кодирования. Если вы сможете заставить людей задуматься о качестве и воспроизводимости, вы уже победили.
Что я нашел полезного:
astyle
для согласованного форматирования (вероятно, это менее актуально для Python-кода). есть ли способ извлекать файлы LabVIEW в DVCS, например git?
Нет причин, по которым файлы LabVIEW не могли быть в DVCS, я использую Mercurial. Однако, поскольку файлы LabVIEW обрабатываются как двоичные файлы, размер вашего репо будет быстро расти.
Из коробки LabVIEW предоставляет только трехстороннее слияние , чтобы использовать функцию сравнения двух необходимых ревизий LV-diff , с несколькими настройками ] для поддержки инструментов, которые изменяют только расположение файлов (например, дублируют имена файлов).
Также важно добавить * .lvlps и * .aliases в ваш список игнорирования, эти файлы не имеют полезного значения на другом компьютере.