Магическая кнопка
Материал из Seo Wiki - Поисковая Оптимизация и Программирование
<imagemap>
Image:Question book-4.svg
| В этом разделе не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. |
| Значимость предмета статьи поставлена под сомнение. Пожалуйста, покажите в статье значимость её предмета, добавив в нее множественные ссылки на источники, каждый из которых должен одновременно:
|
Магическая кнопка — это анти-паттерн, очень распространённый в средах визуальной разработки. В этом случае, программист сначала рисует пользовательский интерфейс, а затем пишет бизнес-логику в автоматичестки созданных методах.
Проблемы этого анти-паттерна:
- Код обработчиков элементов интерфейса неконтролируемо растёт
- Изменение пользовательского интерфейса (или добавление нового интерфейса) становится сложным
- Усложняется тестирование кода
[править] Плохой пример (Borland 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;
[править] Хороший пример (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;