Должен ли я скрыть или уничтожить элементы пользовательского интерфейса? - PullRequest
3 голосов
/ 07 сентября 2010

Мне было интересно, если всякий раз, когда у меня возникает ситуация, когда мне нужно временно скрыть какой-либо элемент пользовательского интерфейса, достаточно его скрыть (многие фреймворки предоставляют такую ​​возможность) или мне следует удалить объект в памяти и создать его позже, когда снова нужен (с теми же параметрами).

Каковы плюсы и минусы каждого решения? Я думал, что, возможно, скрывая элемент, вы сохраняете информацию о состоянии, которая может быть важной, и также экономите время выделения, так что, возможно, это лучший способ для элементов, которые должны быть скрыты в течение короткого периода времени. Но что, если время станет больше? Я бы тогда имел в памяти ненужный объект на все время.

Одним из примеров, чтобы дать четкое представление о том, о чем я говорю, была бы панель инструментов, которая меняет кнопки в зависимости от изменения контекста. То есть, как правило, некоторые кнопки прикреплены к панели инструментов, но когда пользователь выбирает одно действие в какой-либо другой части интерфейса, эти кнопки должны быть заменены новыми (одна из которых - кнопка «Готово»). Аналогично, когда пользователь выбирает кнопку «Готово» на панели инструментов, он возвращается в исходное состояние.

Я не знаю, является ли это глупым вопросом, и, возможно, может быть так, что я делаю что-то вроде преждевременной оптимизации ... но я буду благодарен за все ваши ответы.

Ответы [ 4 ]

3 голосов
/ 07 сентября 2010

Я думаю, что общее правило большого пальца состоит в том, что элементы, которые вы планируете показывать, должны быть скрыты;в противном случае уничтожается (некоторые исключения явно применимы).Когда / если это станет невозможным, вы можете подумать о дальнейшей оптимизации.

1 голос
/ 07 сентября 2010

Это очень хороший вопрос. Вот что происходит со мной:

  • Предположим (только для аргументации), что у вас есть много разных форм, которые могут отображаться в одном и том же месте. Затем, если вы создаете / уничтожаете элементы управления, вы одновременно платите только за элементы управления, которые может видеть пользователь. С другой стороны, если вы скрываете / отображаете элементы управления, вы все время платите за большое количество элементов управления, на которые пользователь не смотрит (и может никогда не увидит). Поэтому я всегда создаю / разрушаю. (На самом деле я сохраняю ранее использованные элементы управления в пулах, поэтому я не создаю их заново.)

  • Многие люди хранят состояние пользователя в элементах управления пользовательского интерфейса, но лично я ненавижу это и никогда этого не делаю. Я думаю, что если какая-то информация заслуживает внимания, она относится к структуре данных приложения. Это, конечно, означает, что элементы управления текущей видимой формы должны быть «привязаны» или поддерживаться в соответствии со структурой данных приложения. Я просто уверен, что могу сделать это, несмотря ни на что.

Я должен был быть изобретательным, чтобы сделать это таким образом, чтобы упростить код приложения, и в результате метод, который я использую , не очень известен, что требует другого вида цены.

0 голосов
/ 07 сентября 2010

Объекты Javascript не похожи на объекты Windows (GDI): они обычно не имеют желания отправлять / получать сообщения - почти пассивные.Чтобы скрыть, нужно меньше кода, верно?Возможно, это зависит от общего количества интерактивных объектов за сеанс пользователя.

0 голосов
/ 07 сентября 2010

На этот вопрос нет общего ответа.Это зависит от типа системы, ограничений ЦП и ОЗУ, количества рассматриваемых элементов пользовательского интерфейса, частоты, с которой пользовательский интерфейс будет отображаться / создаваться и т. Д. Возможно, если бы вы могли привести пример, мы могли бы дать вам более краткийобратная связь.

...