Полезность функций Toggle - PullRequest
3 голосов
/ 13 апреля 2010

Лучше ли писать функции, которые явно что-то делают (то есть HideForm / ShowForm и т. Д ...)

или лучше написать функции типа 'Toggle' (т.е. ToggleVisibility)?

Я нахожу функции типа Toggle странными, потому что сложно отследить состояние, читая код.

В каких ситуациях полезна функция типа переключения?

Ответы [ 2 ]

1 голос
/ 13 апреля 2010

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

Это может быть плохо, если вы не уверены или не уверены в начальном состоянии (но обычно вы можете). Во всяком случае, в большинстве случаев не требуется какой-либо «симметричный» или простой код для запуска , поэтому я не очень-то часто обращаюсь к .toogle

0 голосов
/ 13 апреля 2010

Если целью является удобочитаемость, используйте две отдельные функции.

Мы могли бы иметь: ShowXYZ() и HideXYZ() или ToggleXYZ(bool show). Последний будет отображаться в коде только как ToggleXYZ(true) или ToggleXYZ(false), что делает не совсем понятным, что делает каждый из них. Размещение их как двух отдельных функций не оставляет сомнений относительно того, что функция должна делать.

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

Таким образом, в случае C # вы можете создать enum для предоставления различных состояний и повышения читабельности вашего кода. Вы можете иметь что-то вроде:

SetXYZState(XYZState.Show)

или

SetXYZState(XYZState.MakeWaffles)

, что очень ясно при использовании той же сигнатуры функции.

Это может быть применено к ситуации, когда у вас когда-либо будет только два состояния (или даже только одно, если вы можете расширить его позже), но затраты на его настройку, вероятно, больше, чем просто написание двух функций.

...