Магическая кнопка

Магическая кнопка

Магическая кнопка (англ. Magic pushbutton) — это анти-паттерн, очень распространённый в средах визуальной разработки. В этом случае программист сначала рисует пользовательский интерфейс, а затем пишет бизнес-логику в автоматически созданных методах.

Проблемы этого анти-паттерна:

  • Код обработчиков элементов интерфейса неконтролируемо растёт
  • Изменение пользовательского интерфейса (или добавление нового интерфейса) становится сложным
  • Усложняется тестирование кода

Плохой пример (Borland Delphi)

procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKey_Current_User;
    if reg.OpenKey('SoftwareMyCompany', true) then
    begin
      reg.WriteString('Filename', Edit1.Text);
    end;
  finally
    reg.Free;
  end;
end;

Хороший пример (Borland Delphi)

В этом случае лучше будет произвести рефакторинг бизнес-логики (в этом примере — хранение имени файла в реестре) в отдельный класс.

type
  TPreferences = class
  private
    FFilename: String;
    procedure SetFilename(const Value: String);
  public
    property Filename: String read FFilename write SetFilename;
    procedure Load;
    procedure Save;
  end;

И воспользоваться методом этого класса «Сохранить» из обработчика нажатия кнопки:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Preferences.Save;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Preferences.Filename := Edit1.Text;
end;

Сейчас эта проблема стала актуальной и в Visual C# (Microsoft Visual Studio).

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Магическая кнопка" в других словарях:

  • Prince of Persia (2008) — У этого термина существуют и другие значения, см. Prince of Persia (1989). Prince of Persia Разработчик Ubisoft Montreal …   Википедия

  • Prince of Persia (игра — Prince of Persia (игра, 2008) У этого термина существуют и другие значения, см. Prince of Persia (1989). Prince of Persia Разработчик Ub …   Википедия

  • Kick Master — Обложка игры Разработчик KID Издатель …   Википедия

  • Герои Меча и Магии V — Heroes of Might and Magic V Разработчик Nival Interactive Freeverse Software (Порт на Mac OS X) Издатель …   Википедия

  • Lost Odyssey — Обложка европейского издания Разработчик Mistwalker, feelplus Издатель Microsoft Game Studios …   Википедия

  • The Elder Scrolls III: Morrowind — Запрос «Morrowind» перенаправляется сюда; см. также другие значения. The Elder Scrolls III: Morrowind Разработч …   Википедия

  • TES3 — Это статья о компьютерной игре; о провинции см.: Морровинд. The Elder Scrolls III: Morrowind Разработчик Bethesda Softworks Издатели …   Википедия

  • TES3:Morrowind (компьютерная игра) — Это статья о компьютерной игре; о провинции см.: Морровинд. The Elder Scrolls III: Morrowind Разработчик Bethesda Softworks Издатели …   Википедия

  • TES3: Morrowind — Это статья о компьютерной игре; о провинции см.: Морровинд. The Elder Scrolls III: Morrowind Разработчик Bethesda Softworks Издатели …   Википедия

  • TES Morrowind — Это статья о компьютерной игре; о провинции см.: Морровинд. The Elder Scrolls III: Morrowind Разработчик Bethesda Softworks Издатели …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»