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

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

7
Як рефакторний код до якогось загального коду?
Фон Я працюю над поточним проектом C #. Я не програміст на C #, передусім програміст на C ++. Тож мені було призначено в основному легкі та рефакторинг завдання. Код - безлад. Це величезний проект. Оскільки наш клієнт вимагав частого випуску з новими функціями та виправленнями помилок, усі інші розробники …

7
Якщо вільний кодер нехтує добрими методами, чи не працює він проти нього? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 4 роки тому . Я працюю над досить великим та гнучким додатком - і завдяки тому, як написано …

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

7
Чи повинен я рефактор великих функцій, які в основному складаються з одного регулярного вираження? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 5 років тому . Я щойно написав функцію, яка охоплює приблизно 100 рядків. Почувши це, ви, мабуть, спокусилися …

5
Навіщо писати тести на код, який я буду рефактор?
Я перетворюю величезний клас спадкового коду. Рефакторинг (я вважаю) виступає за це: писати тести для спадкового класу рефакторинг хека з класу Проблема: як тільки я перефактуюю клас, мої тести на кроці 1 потрібно буде змінити. Наприклад, те, що колись було у попередньому методі, тепер може бути окремим класом. То, що …

2
Я повинен був використовувати заводський метод замість конструктора. Чи можу я це змінити і все ще бути сумісним назад?
Проблема Скажімо, у мене є клас під назвою, DataSourceякий забезпечує ReadDataметод (а може бути й інші, але давайте будемо робити прості речі) для читання даних з .mdbфайлу: var source = new DataSource("myFile.mdb"); var data = source.ReadData(); Через кілька років я вирішую, що хочу підтримувати .xmlфайли на додаток до .mdbфайлів як …

6
Як визначити пріоритетність та суворість «поліпшення коду»?
У нашій системі відстеження помилок є поля "пріоритет" та "серйозність". Ми визначаємо суворість як "як це впливає на користувача", а пріоритет - як "як це впливає на продукт". Моє запитання полягає в тому, як класифікувати завдання "поліпшення коду" за ступенем суворості та пріоритетності. Припустимо, що поліпшення не змінює жодної поведінки, …

10
пропонуючи великі зміни / переписати як стажиста [закрито]
Зачинено. Це питання поза темою . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб воно було тематичним для обміну стеками програмного забезпечення. Закрито 4 роки тому . Контекст: це внутрішній проект (який я не думаю, що багато людей використовують) це старе ми її оновлюємо Питання: він зловживає …

11
Чи потрібно виправити наявні дефекти, працюючи над чимось іншим?
Загадка: Під час роботи над новою функцією або виправленням дефекту ви знайдете застарілу проблему в коді. Що тобі слід робити? Виправте це та ризикуйте змінити поведінку коду. Він або до цього часу працював якимось диваком, інакше про дефект не було виявлено або варто нікому часу повідомляти. Ви повинні залишити його …

7
Захист котла?
Для мене код котла, очевидно, поганий. Однак я зустрічав розробника, який виявляє опір у будь-якій спробі зменшити плиту котла. Я зрозумів, що не маю легко сформованого, добре продуманого аргументу, що минув той гнус, який я розвинув за нього з часом. Щоби я міг сформулювати переконливий аргумент на користь меншого розміру …

3
Множини, що будують одну реалізацію. DI безнадійно? Використовувати локатор обслуговування?
Скажімо, у нас є 1001 клієнт, який будує свої залежності безпосередньо, а не приймає ін'єкції. Переобладнання 1001 не є варіантом на думку нашого начальника. Нам фактично навіть не дозволений доступ до їх джерела, лише файли класу. Ми повинні зробити "модернізацію" системи, через яку проходять ці 1001 клієнт. Ми можемо рефакторити …

10
Що може бути причиною появи нових помилок деінде, коли відомий помилка вирішена?
Під час дискусії один з моїх колег сказав, що у нього є певні труднощі з його поточним проектом, намагаючись вирішити помилки. "Коли я вирішую одну помилку, щось інше перестає працювати в іншому місці", - сказав він. Я почав думати про те, як це могло статися, але не можу цього зрозуміти. …

3
Як ви переміщуєтесь та кодом рефактора, написаним динамічною мовою?
Мені подобається, що для написання Python, Ruby або Javascript потрібна така маленька панель. Я люблю прості функціональні конструкції. Я люблю чистий і простий синтаксис. Однак є три речі, на які я дуже поганий, коли розробляю велике програмне забезпечення динамічною мовою: Навігація кодом Ідентифікація інтерфейсів об'єктів, які я використовую Ефективне рефакторинг …

4
Дублювання коду без очевидної абстракції
Ви коли-небудь стикалися з випадком дублювання коду, коли, дивлячись на рядки коду, ви не могли прилаштувати до нього тематичну абстракцію, яка правдиво описує її роль у логіці? І що ви зробили, щоб вирішити це? Це дублювання коду, тому в ідеалі нам потрібно зробити рефрактор, наприклад, зробити його власною функцією. Але …

3
Як ви безпечно переробляєте мовою з динамічним масштабом?
Для тих із вас, хто має щастя не працювати мовою з динамічним розмахом, дозвольте мені трохи оновити, як це працює. Уявіть псевдомову, яку називають "RUBELLA", яка поводиться так: function foo() { print(x); // not defined locally => uses whatever value `x` has in the calling context y = "tetanus"; } …

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