Não gosto de projetos com alta complexidade ciclomática. Procuro evitar.
Mas parece que em alguns casos precisamos de realizar certos malabarismos injustificáveis.
Por exemplo um switch pode ser substituído por um map e vários objetos de comando + uma chamada como no código abaixo:
Mas, vocês acham razoável criar um comando para cada case???
Qual seria outra solução para diminuir a complexidade ciclomática? Vale a pena mesmo procurar reduzir esta métrica no caso de switchs?
O pattern de comando tem outras vantagens. Certamente, o número de switchs sem o pattern tende a crescer, aumentando progressivamente a complexidade geral do sistema. Afinal, com uma modificação em um dos comandos, você terá que localizar e alterar o código em todos os pontos onde existir um switch.
Isso não só é propenso a erros como também trabalhoso.
No caso de usar um objeto de comando, basta olhar para a classe.
Por exemplo, se você adicionar um método complemente novo, o próprio compilador te informará quais são as classes de comando que precisam ser modificadas para suportar esse método.
Dou razão para vocês. Talvez porque eu não tenha contado a história toda.
Eu criei uma tabela fila, e coloquei uma trigger em várias tabelas dicionário. Quando uma dessas tabelas é alterada, eu insero um registro na tabela fila com o nome da tabela alterada. Um listener, carrega os itens da tabela fila e executa uma busca na tabela apropriada para cada um desses itens.
A ramificação do problema ocorre porque o comando sql é diferente para cada tabela.