2010-01-19 2 views
0

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

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

Итак, вот мой вопрос: что может быть лучшим (менее болезненным) подходом к таким ситуациям?

ответ

1

Напишите много-много тестов, которые позволят вам проверить, что изменения, внесенные в систему, не изменяют или не нарушают существующие функции.

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

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

+0

, хотя я не думаю, что было бы легко написать тесты для нашего компонента, но я просто поклонник модульного тестирования, когда речь заходит о рефакторинге. Спасибо за ваш совет. – Beatles1692

1

Вы должны прочитать эту очень хорошую статью Big Ball of Mud. И для вашего ответа мы все получим большой шар грязи в какой-то момент, и нам нужно добавить к нему новые функции. Повторный факторинг такого кода не является хорошей идеей, так как требует много тестирования. Но добавление нескольких новых строк не повредит. Поэтому, если у вас нет много времени, и поэтому тестер просто добавляет новые функции в ваш существующий код. Хотя текущий код выглядит перепутанным, но помните, что он работает и протестирован. Прочтите статью и составите свой разум относительно того, какой подход хорош.

+0

Кстати, Vrsalovic указал на очень хороший пост вы также должны это прочитать. – affan

+0

Зависит от того, как вы переходите на рефакторинг. Большой рефакторинг, конечно, не рекомендуется, но целесообразно попытаться сделать небольшие улучшения, пока вы делаете эти небольшие изменения. Особенно, если вы предвидите, что некоторое время застрянете в грязи. –

+0

Да, ваше право. Я определенно в пользу повторного факторинга, но изменение объема хорошего - это не очень хорошая идея. Если вы можете реорганизовать мою изолирующую функциональность сначала в обратимой манере, а затем внести изменения и сделать это часто, вы можете повысить качество кода. Я предполагал, что в вопросе парень должен сделать одноразовое изменение. – affan

Смежные вопросы