Você tem uma invariante:
Only a single view (out of 3) is ever active (and visible).
Em seguida, sugiro que você forneça uma função para alternar a atividade e a visibilidade de todas as visualizações de uma só vez:
[setActiveView viewID:2]
Esta função irá:
- verifique se a visualização já está ativa, evitando trabalho desnecessário
- define a exibição como ativa e visível
- defina as outras duas visualizações como inativas e invisíveis
Tem várias vantagens sobre uma chamada bruta para setVisibility
:
- amigável: chamá-lo desnecessariamente não cria um problema de desempenho
- defensiva: seu parâmetro único é muito mais difícil de ser alterado, enquanto para
setVisibility
é mais difícil lembrar que o intervalo de valores é0.0f - 1.0f
e que apenas um deve ser definido como1.0f
- resiliente: o próximo cara não pode esquecer acidentalmente uma das visualizações
- adaptável: adicionar / remover uma visualização não exige examinar minuciosamente todo o código do aplicativo para descobrir onde estão os comutadores, uma única função (esta) precisa ser atualizada
Idealmente, para ajudar a impor a invariante, nenhuma outra função deve ser capaz de atrapalhar essa configuração ...