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

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

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

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

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

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

<source lang="delphi"> procedure TForm1.Button1Click(Sender: TObject); var

 reg: TRegistry;

begin

 reg := TRegistry.Create;
 try
   reg.RootKey := HKey_Current_User;
   if reg.OpenKey('\Software\MyCompany', true) then
   begin
     reg.WriteString('Filename', Edit1.Text);
   end;
 finally
   reg.Free;
 end;

end; </source>

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

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

<source lang="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;

</source>

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

<source lang="delphi"> procedure TForm1.Button1Click(Sender: TObject); begin

 Preferences.Save;

end; </source>

<source lang="delphi"> procedure TForm1.Edit1Change(Sender: TObject); begin

 Preferences.Filename := Edit1.Text;

end; </source>

Ссылки

en:Magic pushbutton es:Magic pushbutton

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....