Запитання з тегом «refactoring»

Рефакторинг - це дисциплінована методика перебудови існуючого коду, зміна його внутрішньої структури без зміни зовнішньої поведінки.

5
Чи слід переробляти наявний код, який не порушений в проекті, орієнтованому на нові функції?
Враховуючи невеликий проект, спрямований на додавання нової функціональності в додаток, внесені зміни стосуються деякого існуючого коду, включаючи оновлення їх у певних областях. Під час впровадження я знайшов деякі з цих кодів, які були оновлені і мають кандидатів на рефакторинг. Це підходящий час для рефактора, що, в свою чергу, вимагатиме регресійного …

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

2
Як організувати повторюваний код?
Моя команда створює безліч разових веб-форм. Більшість із цих форм просто надсилають електронне повідомлення, а деякі - просто записують в базу даних. Наразі кожна форма живе у своєму окремому рішенні на сервері Visual Studio Team Foundation Foundation. Це означає, що у нас є близько 100 проектів різних форм, що ускладнює …

4
Які хороші підходи до прибирання старих проектів?
У мене є якесь програмне забезпечення, яке я написав близько 2 років тому, і йому потрібно додати деякі функції. Я зрозумів, що це в жахливому безладі, і у мене є бажання перемістити все навколо, привести в порядок і т. Д. Я прочитав статтю Joel on Software про те, щоб не …

6
Які практичні способи реалізації СРП?
Просто якими практичними прийомами користуються люди, щоб перевірити, чи порушує клас єдиний принцип відповідальності? Я знаю, що у класу повинна бути лише одна причина для зміни, але в цьому реченні дещо не вистачає практичного способу реально реалізувати це. Єдиний спосіб, який я знайшов, - це використовувати речення "The ......... повинен …

5
Як підійти до рефакторингу існуючої веб-програми?
Останнім часом я багато читав і думав, і прийшов до висновку, що, можливо, я повинен переосмислити свою стратегію веб-розробки. Я багато працюю на ходу програмування, і за 2 роки, коли я працював над веб-додатком PHP, те, що, можливо, почалося ще як маленький інструмент, стало досить великим проектом. Але у мене …

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

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

6
Як уникнути нескінченного повторення через однаково неоптимальні конструкції?
Тому, напевно, як у багатьох, я часто стикаюся з головними болями з дизайнерськими проблемами, в яких, наприклад, існує певна модель / підхід дизайну, який, здається, інтуїтивно відповідає проблемі і має бажані переваги. Дуже часто є якийсь застереження, який ускладнює реалізацію схеми / підходу без якоїсь роботи, навколо якої потім заперечується …

5
Використання різних шаблонів для подібних функцій
Я єдиний розробник проекту, який, як і будь-який проект програмного забезпечення, може бути прийнятий ким-небудь ще. Скажімо, я використав шаблон X для реалізації функції А. Після розробки та закінчення функції я розумію, що міг би реалізувати ту саму функцію за допомогою шаблону Y, про який я щойно дізнався. Але функція …

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

3
Мені доводиться йти на компроміс: DRY або Command-Query-Separation?
Нещодавно я переробляв метод, який був і командним, і методом запитів. Розділивши його на один метод команд та один метод запиту, я виявив, що в коді зараз є кілька місць, куди я викликаю команду, а потім отримую значення з запиту, що здається порушенням принципу DRY. Але якби я перетворив цей …

3
Що допомогло б переробляти великий метод, щоб я нічого не порушив?
Наразі я переробляю частину великої бази кодів, не маючи тестування. Я спробував перефактурувати код грубим способом, тобто намагаючись відгадати, що робить код і які зміни не змінять його значення, але без успіху: він випадковим чином розбиває функції по всій базі коду. Зауважте, що рефакторинг включає переміщення застарілого коду C # …

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

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 string calculateTax(string name) { InameHandler …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.