магічна кнопка

Матеріал з Вікіпедії - вільної енциклопедії

Магічна кнопка (англ. Magic pushbutton) - антипаттерн. з'являється при нестачі абстракції, коли безліч різних дій звалюється в купу в невідповідному місці, наприклад в обробнику натиснення на кнопку, замість того щоб бути розподіленими по відповідним класам і функцій. Зазвичай проблема виникає в середовищах візуальної розробки # 91; 1 # 93; # 91; 2 # 93 ;. коли програміст спочатку малює призначений для користувача інтерфейс. а потім пише бізнес-логіку в автоматично створених методах. зазвичай - в методі обробки натискання на кнопку, наприклад «OK» # 91; 3 # 93 ;.

Проблеми цього антипаттерн:

  • Код оброблювачів елементів інтерфейсу неконтрольовано зростає # 91; 3 # 93;
  • Зміна призначеного для користувача інтерфейсу (або додавання нового інтерфейсу) стає складним, наприклад видалення кнопки може призвести до видалення пов'язаних з нею методів # 91; 4 # 93;
  • Ускладнюється тестування коду
  • Повторне використання коду неможливо

Іноді подібні антипаттерн виникають і в серверному коді, наприклад в ASP.NET Web Forms # 91; 5 # 93 ;.

Поганий приклад (Borland Delphi)

Хороший приклад (Borland Delphi)

В цьому випадку краще буде зробити рефакторинг бізнес-логіки (в цьому прикладі - зберігання імені файлу в реєстрі) в окремий клас.

І скористатися методом цього класу «Зберегти» з обробника натискання кнопки:

Напишіть відгук про статтю "Магічна кнопка"

Примітки

література

Уривок, що характеризує Магічна кнопка

- Уварку посилав послухати на зорі, - сказав його бас після хвилинного мовчання, - казав, в Отрадненський замовлення перевела, там вили. (Переклала значило те, що вовчиця, про яку вони обидва знали, перейшла з дітьми в Отрадненський ліс, який був за дві версти від будинку і який був невелике відокремлені місце.)
- Але ж їхати треба? - сказав Микола. - Прийди ка до мене з Уваркой.
- Як накажете!
- Так постривай же годувати.
- Слухаю.
Через п'ять хвилин Данило з Уваркой стояли в великому кабінеті Миколи. Незважаючи на те, що Данило був не великий зростанням, бачити його в кімнаті справляло враження подібне тому, як коли бачиш кінь або ведмедя на підлозі між меблями і умовами людського життя. Данило сам це відчував і, як звичайно, стояв біля самих дверей, намагаючись говорити тихіше, не рухатися, щоб не поламати як небудь панських покоїв, і намагаючись скоріше все висловити і вийти на простір, з під стелі під небо.
Закінчивши розпитування і випитати свідомість Данила, що собаки нічого (Данила і самому хотілося їхати), Микола звелів сідлати. Але щойно Данила хотів вийти, як в кімнату увійшла швидкими кроками Наташа, ще не зачесана і не одягнена, у великому, няниних хустці. Петя вбіг разом з нею.
- Ти їдеш? - сказала Наташа, - я так і знала! Соня казала, що не поїдете. Я знала, що нині такий день, що не можна не їхати.
- Їдемо, - неохоче відповідав Микола, якому нині, так як він мав намір зробити серйозну полювання, не хотілося брати Наташу і Петю. - Їдемо, та тільки за вовками: тобі нудно буде.
- Ти знаєш, що це найбільше моє задоволення, - сказала Наташа.
- Це погано, - сам їде, велів сідлати, а нам нічого не сказав.
- Марними Росії все перепони, їдемо! - прокричав Петя.
- Та це ж тобі і не можна: матінка сказала, що тобі не можна, - сказав Микола, звертаючись до Наташі.
- Ні, я поїду, неодмінно поїду, - сказала рішуче Наташа. - Данила, вели нам сідлати, і Михайла щоб виїжджав з моєї зграєю, - звернулася вона до ловчих.
І так то бути в кімнаті Данилові здавалося непристойно і важко, але мати яке-небудь справу з панянкою - для нього здавалося неможливим. Він опустив очі і поспішив вийти, як ніби до нього це не стосувалося, намагаючись як небудь ненавмисно не пошкодити панночці.

Схожі статті