Лучшие практики в сфере программного обеспечения


Цель Software Carpentry состоит в том, чтобы научить ученых лучше работать с программным обеспечением, как если бы это было любое другое лабораторное оборудование. Теперь у нас есть свой взгляд на «Лучшие практики», и это урок для всех нас, учёных или нет.

Software Carpentry учит ученых работать с программным обеспечением более логичным и организованным способом, чем это обычно бывает. Раньше лабораторное оборудование было в основном аппаратным, и оно было важным компонентом любого эксперимента. Это было выставлено на обозрение и изучено другими учеными. Но не так с большей частью программного обеспечения и даже с данными, которые используются в большинстве современных экспериментов. Ученые склонны использовать случайный подход к программированию, потому что это намного проще, чем аппаратное обеспечение. Конечно, все прекрасно знают, что это легче только при первом запуске. По мере того, как вы медленно запутываете себя в логические узлы, работать с ними становится все труднее и труднее. В результате многие ученые склонны скрывать свой код, то же самое и с необработанными данными.

Дело в том, что описанный выше сценарий применим не только к ученым, но и практически ко всем, кто использует или создает программное обеспечение чем-либо, кроме совершенно тривиальных.

В недавно опубликованной статье Software Carpentry описывается то, что она считает «передовой практикой», и этот документ имеет значение, выходящее далеко за рамки строго научного.

В нем представлены 24 конкретных вещи, которые ученые или программисты в целом могут сделать, чтобы сделать больше за меньшее время и с меньшими усилиями:

Пишите программы для людей, а не для компьютеров.

Программа не должна требовать от читателя одновременного удержания в памяти более чем горстки фактов.

Делайте имена последовательными, отличительными и значимыми.

Сделайте стиль кода и форматирование согласованными.

Позвольте компьютеру делать всю работу.

Заставьте компьютер повторять задачи.

Сохраните последние команды в файл для повторного использования.

Используйте инструмент сборки для автоматизации рабочих процессов.

Вносите постепенные изменения.

Работайте маленькими шагами с частой обратной связью и корректировкой курса.

Используйте систему контроля версий.

Поместите все, что было создано вручную, в систему контроля версий.

Не повторяйте себя (или других).

Каждая часть данных должна иметь единственное авторитетное представление в системе.

Модулируйте код, а не копируйте и вставляйте.

Используйте код повторно вместо того, чтобы его переписывать.

Планируйте ошибки.

Добавляйте в программы утверждения, чтобы проверить их работу.

Используйте готовую библиотеку модульного тестирования.

Превратите ошибки в тестовые примеры.

Используйте символьный отладчик.

Оптимизируйте программное обеспечение только после того, как оно заработает правильно.

Используйте профилировщик для выявления узких мест.

Пишите код на максимально возможном языке.

Дизайн и цель документа, а не механика.

Документируйте интерфейсы и причины, а не реализации.

Вместо того, чтобы объяснять, как это работает, рефакторируйте код.

Вставьте в это программное обеспечение документацию по программному обеспечению.

Сотрудничайте.

Используйте предварительную проверку кода.

Используйте парное программирование, когда знакомите кого-то с новичком и решаете особо сложные задачи.

Используйте инструмент отслеживания проблем.

Более подробное объяснение каждого из них можно найти в документе, который можно загрузить бесплатно.


Добавить комментарий