Я согласен с ответом Дариена, но хотел добавить точку зрения с точки зрения программистов на C #.
Когда я вижу код, который говорит «setXXX», я читаю это, чтобы сказать, что он устанавливает значение для чего-либо, я не ожидаю, что это будет иметь побочные эффекты в этом, кроме установки этого значения, и я ожидаю, что это будет идемпотентным (т.е. я могу продолжать устанавливать его с тем же значением, и это нормально). Это скорее как доступ к полю. Как правило, я бы также ожидал увидеть метод getXXX вместе с setXXX.
Я не знаю, ожидаете ли вы этого в Java и C ++, но это то, что я ожидал бы в C #, хотя в C # есть сокращение для этого, называемое Properties. И вот несколько хороших советов о том, как использовать свойства ( http://msdn.microsoft.com/en-us/library/ms182181.aspx ).
Учитывая это представление, интерфейс, который я бы выбрал, зависит исключительно от наличия побочных эффектов (кроме изменения значения этого поля):
Если выполнение действия имеет побочные эффекты, например, оно показывает диалоговое окно, тогда я бы выбрал «Показать ()» и «Скрыть ()».
Если у него нет побочных эффектов, скажем, я устанавливаю видимость «виджета», а что-то еще отображает этот виджет в зависимости от его состояния, тогда я бы использовал setVisibility или setIsVisible. (Я бы не назвал это SetVisible).
В C # (не уверен в Java) довольно распространено использование шаблона наблюдателя, в котором инфраструктура пользовательского интерфейса будет прослушивать изменения объектов и автоматически повторно отображать пользовательский интерфейс при изменении свойства, такого как Visibility. Это означает, что установка значения путем вызова setIsVisible выглядит так, как будто у него есть побочные эффекты, но в моем определении это не так. Контракт виджета выполняется путем установки значения его поля, представляющего «IsVisible».
Другими словами, я могу переключать видимость метки в форме перед ее отображением. Т.е. label.getIsVisible == true, но форма не отображается.
Я не могу вызывать Hide (), когда форма не отображается.