Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Метод потребує код ініціалізації перед викликом або пост-код після виклику

Код наступного виду є "попереджувальним знаком":

WithdrawalTransaction withdrawal;

withdrawal.SetCustomerId( customerId );

withdrawal.SetBalance( balance );

withdrawal.SetWithdrawalAmount( withdrawalAmount );

withdrawal.SetWithdrawalDate( withdrawalDate );

ProcessWithdrawal( withdrawal );

customerId = withdrawal.GetCustomerId();

balance = withdrawal.GetBalance();

withdrawalAmount = withdrawal.GetWithdrawalAmount();

withdrawalDate = withdrawal.GetWithdrawalDate();

Подібним знаком є випадок, коли створюється спеціальний конструктор для класу WithdrawalTransaction, який має параметрами значення для підмножини його властивостей:

withdrawal = new WithdrawalTransaction( customerId, balance,

withdrawalAmount, withdrawalDate );

ProcessWithdrawal( withdrawal );

delete withdrawal;

Кожен раз, коли зустрічається таке, потрібно задуматись, чи інтерфейс методу правильно представляє відповідну абстракцію. В даному випадку, напевне, метод ProcessWithdrawal() потрібно додати до класу WithdrawalTransaction, або список параметрів ProcessWithdrawal повинен бути змінений, щоб код мав вигляд:

ProcessWithdrawal( balance, withdrawalAmount, withdrawalDate );

Потрібно відмітити, що якщо подивитись навпаки, то можна побачити схожу проблему. Якщо виявляється, що існує об’єкт WithdrawalTransaction, а потрібно передавати значення декількох його властивостей в інший метод:

ProcessWithdrawal( withdrawal.GetCustomerId(), withdrawal.GetBalance(),

withdrawal.GetWithdrawalAmount(), withdrawal.GetWithdrawalDate() );

то потрібно розглянути можливість зміни інтерфейсу методу ProcessWithdrawal, щоб передавати об’єкт, а не його окремі властивості. Будь-який з даних підходів може бути правильним чи ні – це залежить від того, чи абстракція інтерфейсу ProcessWithdrawal() є тим, що очікує отримати чотири окремі порції даних, чи цілий WithdrawalTransaction об’єкт.

 

Рівні рефакторингу

 

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

 

Приклади можливих кроків в процесі рефакторингу


Читайте також:

  1. B. Тип, структура, зміст уроку і методика його проведення.
  2. D) методу мозкового штурму.
  3. D) усі попередні відповіді вірні.
  4. D) усі попередні відповіді вірні.
  5. Demo 11: Access Methods (методи доступу)
  6. H) інноваційний менеджмент – це сукупність організаційно-економічних методів управління всіма стадіями інноваційного процесу.
  7. I Метод Шеннона-Фано
  8. I. ЗАГАЛЬНІ МЕТОДИЧНІ ВКАЗІВКИ
  9. I. Метод єдиної подібності.
  10. I. Метод рiвних вiдрiзкiв.
  11. II. Вимоги безпеки перед початком роботи
  12. II. Вимоги безпеки праці перед початком роботи




Переглядів: 424

<== попередня сторінка | наступна сторінка ==>
Зміни, що вносяться в клас, мають сегментний характер | Рефакторинги рівня даних

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.