Estoy de acuerdo con la respuesta de Darien, pero quería agregar un punto de vista desde la perspectiva de los programadores de C #.
Cuando veo el código que dice 'setXXX', leí que para decir que está estableciendo un valor en una cosa, no espero que esto tenga efectos secundarios en esa cosa que no sea establecer ese valor, y espero que ser idempotente (es decir, puedo seguir configurándolo con el mismo valor y está bien). Es como acceder a un campo. En general, también esperaría ver un método 'getXXX' junto con un 'setXXX'.
No sé si esto es lo que esperas en Java y C ++, pero eso es lo que esperaría en C #, aunque en C # hay una mano corta para esto llamada Propiedades. Y aquí hay una buena guía sobre cómo usar las Propiedades ( enlace ).
Dada esta vista, entonces la interfaz que elegiría depende únicamente de si hay algún efecto secundario (aparte de cambiar el valor del campo):
Si realizar la acción tiene efectos secundarios, por ejemplo, muestra un cuadro de diálogo, entonces iría con "Mostrar ()" y "Ocultar ()".
Si no tiene efectos secundarios, diga que estoy configurando la visibilidad de un "widget" y otra cosa hace que ese widget, dependiendo de su estado, use setVisibility o setIsVisible. (Yo no lo llamaría SetVisible).
En C # (no estoy seguro acerca de Java) es bastante común adoptar un patrón de observador, donde el marco de la interfaz de usuario escuchará los cambios en los objetos y volverá a representar automáticamente la interfaz de usuario cuando cambie una propiedad como Visibility. Eso significa que establecer el valor llamando a setIsVisible aparece como si tuviera efectos secundarios, pero en mi definición no lo tiene. El contrato del widget se cumple estableciendo su valor de campo que representa "IsVisible".
Dicho de otra manera, está bien que alterne la visibilidad de una etiqueta en un formulario antes de que se muestre el formulario. Es decir, label.getIsVisible == true, pero el formulario no se muestra.
No está bien que llame a Ocultar () cuando no se muestra el formulario.