Tengo tres vistas en mi programa (aplicación iOS). Solo uno de ellos está activo al mismo tiempo, así que configuro la visibilidad para dos de ellos y cambio la visibilidad cuando el usuario presiona los botones. Las vistas se inicializan como visibles, así que configuro la visibilidad en el código antes de que se muestre la vista principal.
puedo hacer
[view1 setAlpha:0.0f];
[view2 setAlpha:0.0f];
para dos de las vistas, pero ahora no se aborda la tercera (la que debería estar visible al inicio de la aplicación). Yo puse un
[view3 setAlpha:1.0f];
después de los dos primeros, porque creo que deja en claro que, de hecho, hay tres puntos de vista, no dos como uno podría pensar al ver el código. ¿Cómo hacen esto otros programadores? ¿Es pura preferencia o hay algunas convenciones?
Si la llamada es muy pesada, obviamente es mejor no llamar cuando eso no sea necesario, pero me preguntaba sobre cosas pequeñas como mi ejemplo.
fuente
setVisibility
no haga nada si la visibilidad ya es la solicitada, lo que reduce la responsabilidad.Idea alternativa: si su objetivo es evitar que ocurran errores porque las personas olvidan que hay tres puntos de vista y hacen algo con solo dos de ellos que realmente deberían hacer con todos ellos, entonces hagan una función que haga imposible olvidar:
Ahora tiene algo mucho más poderoso: el tiempo de compilación garantiza que no lo ha olvidado . Si olvida un parámetro, el compilador le gritará. Esto es mucho más útil que los comentarios o el código innecesario, ya que crea un protocolo con nombre estricto que hace cumplir la propiedad que le interesa.
Para el caso en que
view3
no necesita que haya cambiado la visibilidad, se puede añadir un poco de comportamiento, donde pasa un valor especial como-1.0
onil
, o algo por el estilo significa "no cambiar la vista de la visibilidad en absoluto". Esto evita el problema de establecer visibilidades innecesariamente.fuente
Creo que agregar un comentario explicando que la llamada no es necesaria (y por qué) es lo mejor.
(tal vez, el hecho de que una llamada no sea necesaria, o que necesite un comentario al respecto, podría ser un olor a código)
fuente
En este caso particular, @Mattieu M. tiene la solución correcta.
En el caso más general, donde no hay una transformación similar, tienes que preguntarte: ¿hay alguna posibilidad de que un futuro programador pueda estropear esto?
La respuesta suele ser sí. Lo que significa que sí, debe agregar la llamada. Tal vez alguna versión futura del marco comience con todas las vistas DESACTIVADAS en lugar de ACTIVADAS.
fuente