Senhores, boa noite!
Essa semana, durante a divisão das atividades, meu sócio ficou encarregado de desenvolver um cadastro qualquer no sistema que estamos criando.
Ele desenvolveu a solução, mas fez de tal maneira que a JSP usada na tela de cadastro é a mesma utilizada na tela de alteração dos dados cadastrais. Não só a JSP. Os métodos utilizados na classe do servidor (estamos utilizando o Vraptor 3) são os mesmos para ambas as operações.
Até aí, sem problemas. Não digo que nos poupou trabalho, pois a página de alteração seria um simples CTRL-C, CTRL+V do que ele havia feito.
Porém, sempre fui do time contrário a essas paradas. Deixar tudo centralizado no mesmo local me soa um tanto quanto procedural. E digo com razão da palavra, pois já trabalhei mais de 2 anos com mainframe (COBOL, CICS… :oops: hehehe).
Falei para ele fazer em arquivos (JSPs) separados e criar os respectivos métodos no controller. Porém, o argumento dado para não fazer isso foi de que seria um problema na hora de alterar alguma coisa em uma página (refatorar), pois teríamos que replicar as alterações em ambos arquivos.
Justo. Até certo ponto.
Algum tempo depois (alguns minutos, para ser mais preciso…rs), tive que fazer uma alteração na bendita página. O problema foi justamente que a vantagem da refatoração amigável acabou indo por água abaixo quando precisei alterar o método que controlava as operações. O bendito método estava sendo acessado, em ambas operações (inclusão e alteração), pela mesma URI: “/cadastrar”. Alterei, de forma que, quando fosse uma alteração, fosse passada na URI o id do objeto em questão: “/cadastrar/idDoObjeto”.
Aí já causa um desconforto, pois a semântica fica um pouco confusa. O usuário pode pensar: “Cadastrar um objeto que já está cadastrado?” (???).
Porém, isso azedava o pé do frango em relação a inclusão, que era acessada pela URI “/cadastrar”. Ou seja, a questão da refatoração amigável acabou se mostrando não tão amigável assim nessa situação, pois o alto grau de acoplamento entre as actions acabava por destruir esse benefício.
Mas, mesmo assim, meu sócio não quer alterar a estrutura da solução, criando arquivos separados e métodos distintos para cada situação. Me sugeriu até mesmo criar um campo hidden passando qual a ação estava sendo tomada naquele momento. Nem vou comentar o que penso a respeito disso.
Além disso, sugeriu que eu faça a mesma coisa com todas as minhas páginas de cadastros, alegando o supracitado “benefício” da refatoração.
Enfim, me digam aí o que vocês pensam a respeito disso. É nítido que prefiro deixar tudo separado, deixando o mais desacoplado possível. Mas posso estar equivocado e não ter enxergado algum problema mais profundo quanto a essa abordagem. O que preciso é de argumentos que me convençam que estou errado, ou que possam convencê-lo de que, nesses casos, o desacoplamento é mais adequado.
Valeu galera.
Aguardo comentários.
Abs.