МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Метод потребує код ініціалізації перед викликом або пост-код після викликуКод наступного виду є "попереджувальним знаком": 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 об’єкт.
Рівні рефакторингу
Термін рефакторинг іноді використовується в широкому значенні як будь-яке внесення змін в програму – з метою виправлення помилок, додавання функціональності, зміни дизайну тощо. Таке використання даного терміну не є точним і його потрібно намагатись уникати. Рефакторинг наголошує не просто на внесенні змін як таких, а на їх цілеспрямованості на досягнення покращення коду, що тягне за собою стійке покращення якості програми і запобігає широко відомій руйнівній спіралі програмної ентропії.
Приклади можливих кроків в процесі рефакторингу Читайте також:
|
||||||||
|