Я уже несколько раз проходил этот процесс и обнаружил, что решение требует знания следующего:
- Будут ли политические волнения в связи с концепцией исправления этих вещей?
- Существует ли в настоящее время общепринятый стандарт того, как эти вещи должны выглядеть / форматироваться?
- Есть ли хорошие контрольные примеры?
Политическую ситуацию труднее всего смягчитьПо сути, никому не нравится идея бокового перемещения, и процесс принудительного соблюдения соглашений о форматировании кода и именовании является в значительной степени боковым движением.Если вы можете придумать солидный набор показателей, оправдывающих ваше решение, ваше боковое движение можно замаскировать как движение вперед.Я обнаружил, что лучшие показатели здесь соответствуют
", согласованный набор стандартов кодирования приведет к: - на 30% меньше ошибок - на 30% быстрее к разработке - на 80% к снижению затрат на обслуживание - на 100%из нас, программистов, будут гораздо счастливее эти изменения "
Не просто вытащить эти цифры из воздуха - это хитрость.Иметь возможность оправдать это.
Очевидно, что нет смысла начинать эту работу, если вы не согласны с людьми, которые в настоящее время добавляют в проект.Все должны согласиться и начать ретро-встраивание этих идеалов в код, который существует в настоящее время.Помните, что не все используют IDE (например, я кодирую все свои java в VIM), и поэтому вы должны убедиться, что этот формат продиктован в вики для всеобщего обозрения (особенно для новых членов команды) и что на вики-странице есть загрузки для различных редакторов.используется.
Поскольку весьма вероятно, что мы говорим не только о форматировании кода, но также о переименовании переменных и изменении шаблонов, это влияет на общедоступные API ваших классов, поэтому вам действительно необходимо убедиться, что у вас естьочень стабильный набор тестовых случаев.Если тестовые случаи отсутствуют, вы всегда должны начинать с внешней стороны - моделировать свои тесты так, чтобы они взаимодействовали так, как это делают ваши пользователи.Тогда вы можете пройти и рефакторинг со степенью уверенности.Когда у вас есть код, который напоминает ваши мечты, вы можете пойти и добавить тесты ближе к каждому объекту.Нет ничего более болезненного, чем создание всех ваших тестовых случаев, а затем изменение API и необходимость изменения всех ваших тестовых случаев;каждый раз, когда я видел это, это приводит к значительному снижению охвата тестами.