Вопросы с тегом «refactoring»

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

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

3
Когда не рекомендуется и когда нужно удалить в Java
Как часть процесса рефакторинга или просто продолжающейся разработки, конкретный метод или, может быть, целый класс может в некотором смысле устареть. Java поддерживает @Deprecatedаннотацию, чтобы указать, что, вероятно, есть лучший способ справиться с рассматриваемой функциональностью. Я полагаю, что это особенно полезно в общедоступных API, где последствия удаления частей API могут быть …

2
Как организовать повторяющийся код?
Моя команда создает много одноразовых веб-форм. Большинство из этих форм просто отправляют электронную почту, а некоторые делают простую запись в базу данных. Прямо сейчас каждая форма живет в своем отдельном решении в Visual Studio Team Foundation Server. Это означает, что у нас есть около 100 различных форм проектов, что затрудняет …

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

6
Каковы практические способы реализации SRP?
Просто какие практические методы люди используют, чтобы проверить, нарушает ли класс принцип единственной ответственности? Я знаю, что у класса должна быть только одна причина для изменения, но этому предложению не хватает практического способа действительно реализовать это. Единственный способ, который я нашел, - это использовать предложение "......... должен ......... сам". где …

5
Как подойти к рефакторингу существующего веб-приложения?
В последнее время я много читал и думал, и пришел к выводу, что, может быть, мне следует переосмыслить свою стратегию веб-разработки. Я много занимаюсь программированием «на лету», и за 2 года работы над веб-приложением на PHP, возможно, началось то, что маленький инструмент стал довольно большим проектом. Но есть тонна унаследованного …

4
Заменить Условное на Полиморфизм надлежащим образом?
Рассмотрим два класса Dogи Catкак в соответствии с Animalпротоколом (с точки зрения языка программирования Swift. Это было бы интерфейс в Java / C #). У нас есть экран со смешанным списком собак и кошек. Есть Interactorкласс, который обрабатывает логику за кулисами. Теперь мы хотим предоставить пользователю подтверждение, когда он хочет …

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

6
Как избежать бесконечно повторяющихся одинаково неоптимальных проектов?
Поэтому, вероятно, как и многие, я часто сталкиваюсь с головными болями, связанными с проблемами проектирования, в которых, например, есть какой-то шаблон / подход к проектированию, который, кажется, интуитивно подходит к проблеме и имеет желаемые преимущества. Очень часто есть некоторая оговорка, которая затрудняет реализацию шаблона / подхода без какой-либо обработки, которая …

5
Использование разных шаблонов для похожих функций
Я единственный разработчик проекта, который, как и любой программный проект, может быть взят кем-то другим в будущем. Допустим, я использовал шаблон X для реализации функции A. После разработки и доработки функции я понимаю, что могу реализовать ту же функцию, используя шаблон Y, о котором я только что узнал. Но функция …

4
Уменьшение сложности класса
Я посмотрел на некоторые ответы и искал в Google, но я не смог найти ничего полезного (то есть, это не будет иметь неловких побочных эффектов). Моя абстрактная проблема в том, что у меня есть объект и мне нужно выполнить длинную последовательность операций над ним; Я думаю об этом как о …

3
Я должен пойти на компромисс: СУХОЙ или Command-Query-Separation?
Недавно я проводил рефакторинг метода, который был и командой, и методом запроса. Разделив его на один метод команды и один метод запроса, я обнаружил, что в коде теперь есть несколько мест, где я вызываю команду, а затем получаю значение из запроса, что выглядит как нарушение принципа СУХОЙ. Но если бы …

3
Что поможет при рефакторинге большого метода, чтобы я ничего не сломал?
В настоящее время я занимаюсь рефакторингом части большой кодовой базы без каких-либо модульных тестов. Я попытался реорганизовать код грубо, то есть, пытаясь угадать, что делает код, и какие изменения не изменили бы его значения, но безуспешно: он случайным образом нарушает функции по всей базе кода. Обратите внимание, что рефакторинг включает …

7
Временные переменные и требования к длине строки
Я читал Рефакторинг Мартина Фаулера . Как правило, это отлично, но одна из рекомендаций Фаулера, кажется, вызывает небольшие проблемы. Фаулер рекомендует заменить временные переменные запросом, поэтому вместо этого: double getPrice() { final int basePrice = _quantity * _itemPrice; final double discountFactor; if (basePrice > 1000) discountFactor = 0.95; else discountFactor …

5
Как выполнить модульное тестирование функции, которая подвергается рефакторингу к шаблону стратегии?
Если у меня есть функция в моем коде, которая выглядит следующим образом: class Employee{ public string calculateTax(string name, int salary) { switch (name) { case "Chris": doSomething($salary); case "David": doSomethingDifferent($salary); case "Scott": doOtherThing($salary); } } Обычно я реорганизовал бы это, чтобы использовать Ploymorphism, используя фабричный класс и шаблон стратегии: public …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.