Существует ли точка, где стоимость рефакторинга перевешивает стоимость перезаписи?

Вы можете попробовать этот код. Это адаптировано из исходного кода Keras. Я не проверял это сам.

class AdamLearningRateTracker(Callback):
    def on_epoch_end(self, logs={}):
        beta_1 = self.beta_1, 
        beta_2 = self.beta_2
        optimizer = self.model.optimizer
        if optimizer.decay > 0:
            lr = K.eval(optimizer.lr * (1. / (1. + optimizer.decay * optimizer.iterations)))
        t = K.cast(optimizer.iterations, K.floatx()) + 1
        lr_t = lr * (K.sqrt(1. - K.pow(beta_2, t)) /(1. - K.pow(beta_1, t)))
        print('lr: {:.6f}\n'.format(lr_t))
8
задан Mike 23 February 2009 в 11:15
поделиться

6 ответов

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

Рефакторинг является почти наверняка правильным ответом. У меня нет опыта при рефакторинге PHP (я делаю C++ и C#), таким образом, я не могу дать определенный совет. Необходимо продолжить двигаться маленькими шажками.

  • Во-первых, определите части кода, которые оскорбляют Вас больше всего. Для меня, в C++, это - глобальные переменные.
  • Во-вторых, сделайте маленькие рефакторинги для удаления одной проблемы за один раз. Чтобы постараться не повреждать клиенты старшего возраста того кода, Вы, возможно, должны были бы поместить фасад на месте. Или можно поместить новый фасад в старый код, или можно поместить старый фасад в новый код.
  • В-третьих, и самый важный, если Вы не действительно уверены, удостоверяются, что у Вас есть твердый набор модульных тестов на код, который Вы собираетесь осуществить рефакторинг.

Но: не отбрасывайте все для перезаписи кода. Осуществляйте рефакторинг постепенно. Это замедлит Вас немного, но Вы будете все еще поставлять значение, как Вы продвигаетесь.

См. эту статью, которая поможет Вам объяснить Технический Долг своему управлению. Это также объяснит, почему они, кажется, не заботятся.

5
ответ дан 5 December 2019 в 22:20
поделиться

На небольшом уровне, да: обеспечьте новую версию функции, проверьте, что она работает с новым, а также со старым, удалите старое. Это достаточно часто быстрее, чем рефакторинг самого funciton. Но на том уровне, это осуществляет рефакторинг :)

Стратегическая стоимость переписывания фактически всегда превышает рефакторинг.

Вы не можете поставить. Необходимо поддержать старую версию при разработке нового. Если финансы говорят, что необходимо уничтожить переписать проект, Вы ничего не достигли - Ваша рабочая кодовая база находится в плохой форме, как будто ничто никогда не делалось. Вероятно, еще хуже, так как все изменения были kluged на том, потому что "мы выбросим это когда переписать концы так или иначе".


Да сценарии, где переписыванием является более дешевый CAN быть созданным:

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

Однако, опыт показывает, что код плох по причине, и это - не всегда кодеры, и когда Вы не определите и изменяете причины, переписывание будет упражнением в повторяющейся истории.

0
ответ дан 5 December 2019 в 22:20
поделиться

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

1
ответ дан 5 December 2019 в 22:20
поделиться

это - очень твердое решение сделать...

проблема, которую я вижу здесь, что платформа используется и фиксируется в течение долгого времени так там, большое знание вошло в нее, и качество для под управлением проектов очевидно приемлемо. таким образом, при перезаписи его с нуля со всеми требованиями, Вы знаете - можно быть уверены, что Вы забудете что-то, что уже работало (трудно один, чтобы объяснить это клиенту - или Ваш босс ;))

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

существует три опции:

  • живой с ним
  • убедите парня, что рефакторинг необходим так, все могут использовать/поддерживать его не только его
  • убедите управление, что переписывание необходимо, но это получит тот, который против переписывания/осуществления рефакторинг действительно нарушения

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

0
ответ дан 5 December 2019 в 22:20
поделиться

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

0
ответ дан 5 December 2019 в 22:20
поделиться

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

0
ответ дан 5 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: