Обновление кодовой базы для соответствия стандартам - PullRequest
2 голосов
/ 27 августа 2010

Если у вас есть кодовая база, которая немного запутана в отношении стандартов кодирования - сочетание различных соглашений от разных людей - разумно ли дать одному человеку задачу проработать каждый файл и поднять его для удовлетворенияСтандарты?

Помимо невероятной скучности, вы получите массу изменений в SVN (или чего-либо еще), что может усложнить сравнение версий.Разумно ли настраивать кого-либо на всю кодовую базу или считается глупым трогать файл только , чтобы он соответствовал стандартам?Должны ли файлы быть оставлены в покое, пока не потребуются какие-то «настоящие» изменения, а затем будут обновлены?


Помечен как C ++, так как я думаю, что на разных языках есть разные автоматизированные инструменты для этого.

Ответы [ 4 ]

1 голос
/ 27 августа 2010

Должны ли файлы быть оставлены в покое, пока не потребуются какие-либо "реальные" изменения, а затем обновиться?

Это то, что я бы сделал.

Даже если это в первую очередь изменения текстового макета, выполнение этого вручную в крупном масштабе может привести к поломке работающего кода.

Рассматривайте это как рефакторинг и делайте это локально всякий раз, когда по какой-либо причине нужно коснуться кода. Добавьте тесты, если они отсутствуют, чтобы повысить ваши шансы не взломать код.

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

Я также думаю, что это в значительной степени не зависит от языка.

0 голосов
/ 28 августа 2010

Вы можете довольно легко решить вопрос форматирования стиля кодирования. Существует ряд инструментов , которые могут автоматически форматировать ваш код. Я рекомендую подключить один из них к функции регистрации вашего инструмента контроля версий. Таким образом, люди могут использовать любой формат, который они хотят, при редактировании своего кода, но когда он возвращается, он переформатируется в официальный стиль.

В общем, я думаю, что лучше, если вы сможете сделать большие изменения сразу. В прошлом мы сделали следующее: 1. уделите время переформатированию, когда большинство людей не работают (например, ночью или в выходные дни) 2. попросите человека проверить как можно больше файлов в то время, переформатировать их и проверить снова

С ревизией только для переформатирования вам не нужно выяснять, что изменилось в дополнение к форматированию.

0 голосов
/ 27 августа 2010

Это также зависит от того, какие изменения вы планируете внести, чтобы довести его до вашего стандарта кодирования.Всеобщее определение стандарта кодирования отличается.

Более конкретно:

  • Могут ли ваши предлагаемые изменения быть внесены в проект со 100% гарантией того, что весь проект будетработать так же, как и раньше?Например, изменения, которые влияют только на комментарии, разрывы строк и пробелы, должны быть в порядке.
  • Если у вас нет 100% гарантии, то существует риск, который не следует принимать, если он не может быть сбалансирован с выгодой,Например, есть ли необходимость глубже понять текущую кодовую базу, чтобы продолжить ее разработку или исправить ее ошибки?Не мешают ли эти инициативы кодовым соглашениям?Если это так, оцените затраты и выгоды и решите, является ли переосмысление оправданным.
  • Если вам необходимо понять текущую кодовую базу, вот техника: отслеживание.
    • Сделайте копию базы кода.Обратите внимание, что трассировка включает добавление кода, поэтому его не следует выполнять в рабочей копии.
    • В новой копии вставьте множество операторов fprintf (trace) в любые функции, считающиеся критическими.Может быть возможно автоматизировать это.
    • Запустите проект с различными входными данными и соберите эти результаты трассировки.Это поможет всем понять дизайн текущего проекта.
  • Еще один метод для понимания текущей базы кода заключается в документировании зависимостей в проекте.
    • Некоторые виды зависимостей (зависимость интерфейса, зависимость C ++ включает, зависимость typedef / идентификатор C ++) могут быть извлечены автоматическими инструментами.
    • Зависимость времени выполнения может быть извлечена только путем трассировки илиинструменты профилирования.
0 голосов
/ 27 августа 2010

Я думал, что это задача, которую вы можете дать ребенку с опытом работы или поставить на RentaCoder

Это зависит главным образом от размера кодовой базы.

Я видел трех учеников, которым было дано задание пройти через кодовую базу 2MLoC (несколько тысяч исходных файлов), чтобы вставить одну новую строку в стандартный отказ от ответственности вверху всехисходные файлы (содержание строки зависит от имени и пути файла).Это заняло у них несколько дней.Один из трех использовал большую часть этого времени, чтобы написать сценарий, который будет это делать, а затем исправил только те файлы, в которых сценарию не удалось правильно вставить строку, а два других просто пропустили файлы.(Тот, кто написал сценарий, позже получил работу в этой компании.)

Работа по ручной адаптации всех этих файлов в этой кодовой базе к определенным стандартам кодирования, вероятно, должна измеряться в человеко-годах.
OTOH, если это всего несколько десятков файлов, это, безусловно, выполнимо.

Скорее всего, ваша кодовая база где-то посередине, поэтому вам лучше всего выбрать «ребенка с опытом работы», чтобы выяснить, есть ли инструмент, который может сделать это к вашему удовлетворению, и, если это так, сделатьэто работает.

Должны ли файлы быть оставлены в покое, пока не понадобятся какие-то "реальные" изменения, а затем будут обновлены?

Я бы настоятельно советовал против этого. Если вы сделаете это, у вас будут "настоящие" изменения, смешанные с любым переформатированием, что сделает невозможным увидеть "реальные" изменения в diff.

...