VB .NET - Programa Lavanderia, o que é, e o que poderia ter sido


Olhe bem para a imagem abaixo !!!

Ele é a tela principal (e única) de um programa para controlar uma pequena lavanderia.(Ao lado vê-se o relatório gerado pelo programa)

Vou descrever o que o sistema faz: Registra a entrega de serviço feita por um cliente e calcula o prazo de entrega e o valor a pagar

Parece ser bem simples não é mesmo ???

Vejamos então as funcionalidades do sistema:

Obs: Ao definir a hora de entrega se a entrega do serviço for feita até às 9:00 horas da manha o serviço será entregue as 17:00 hs do mesmo dia caso contrário será entregue as 8:00 hs do dia seguinte. Se o próximo dia for um domingo então a entrega ser feita na próxima segunda-feira.

E porque este sistema foi feito ???

Para atender uma necessidade.

Ele atende a necessidade ???

Vamos supor que o cenário era o seguinte: Você montou um pequeno negócio, esta sem recursos, e precisa controlar a entrada e entregue de serviço na sua pequena lavanderia. Como não tinha dinheiro aquele seu amigão que manja muito de Visual Basic .NET montou esse pequeno sisteminha quebra-galho para ajudá-lo.

Diante deste quadro o sistema atende sua necessidade, embora apresente alguns problemas e algumas funcionalidades que você desejaria melhorar mais adiante, como incluir mais produtos por exemplo.

Só que este pequeno sistema tem um grande problema : sua manutenção dá muito trabalho, e qualquer alteração que você faça vai implicar em alterar sua interface e seu código fonte.

Na verdade se examinarmos o código fonte deste projeto iremos encontrar diversos Anti-Patterns ou Anti-Padrões.

Vejamos algumas características dos anti-padrões:

- Os Anti-Padrões são soluções negativas que apresentam mais problemas do que se propõem a resolver;
- Os Anti-Padrões são uma extensão natural dos Padrões de Projeto; (O maior perigo é quando a mentira se parece com a verdade.)
- Os Anti-Padrões são a ponte entre a lacuna existente entre os conceitos de arquitetura e a implementação do mundo real;
- Os Anti-Padrões, apresentam uma solução comum que refaz o sistema de modo a maximizar os benefícios e minimizar as conseqüências (aspectos negativos);
- Os Anti-Padrões identificam abordagens técnicas equivocadas e práticas de desenvolvimento erradas que levam ao desenvolvimento de software de má qualidade e ao fracasso de projetos de software;

Apenas para ilustrar veja um trecho onde definimos as variáveis usadas no projeto:

    ......
  ' atualiza o nome global do arquivo
        NomeArquivo = strDiretorio + "\" + iNomeArquivo.ToString() + ".mac"
        txtNumeroOS.Text = iNomeArquivo.ToString()

        txtNomeCliente.Text = ""
        txtTelefone.Text = ""
        dtpDataEntrega.Value = DateTime.Today
        dtpHoraEntrega.Value = DateTime.Today
        dtpDataEsperada.Value = DateTime.Today
        dtpHoraEsperada.Value = DateTime.Today

        cboEstadoServico.SelectedIndex = 0
        dtpDataRetirada.Value = DateTime.Today
        dtpHoraRetirada.Value = DateTime.Today

        txtPreco1.Text = "5,25"
        txtQtd1.Text = "0"
        txtSubTotal1.Text = "0,00"

        txtPreco2.Text = "7,95"
        txtQtd2.Text = "0"
        txtSubTotal2.Text = "0,00"

        cboItens1.Text = "Nenhum"
        txtPreco3.Text = "0,00"
        txtQtd3.Text = "0"
        txtSubTotal3.Text = "0,00"
        ......
        ......

Creio que o código acima ilustra o que o sistema é de difícil manutenção e não é escalável e possui um código confuso e mal estruturado.

"Tudo bem !! O sistema é só um quebra-galho e vai ser substituído no futuro por um sistema mais robusto."

A frase acima é dita com muito frequência para justificar sistemas mal projetados. O problema é que tais sistemas tendem a se perpetuar e a gerar uma manutenção dispendiosa consumindo recursos valiosos que poderiam estar alocados produzindo projetos para atender outras necessidades.

"Pô cara, se esse sistema é uma mer... por que você publicou esse artigo com esse sistema" ?

Quem sabe você não precise de um tranco para começar a se interessar por padrões de projetos e pelas boas práticas ???

Quem sabe você não tenha uma pequena lavanderia e precise de um sistema para quebrar o galho ????

Quem sabe você não tenha que sentir na pela o drama de ter que lidar no dia a dia com um sistema mal projetado...

Desafio (ou missão impossível) : Tente aplicar as boas práticas ao sistema tornando-o robusto, escalável e de fácil manutenção.

Para terminar uma pergunta que não quer calar...

"Por que não começar fazendo as coisas da forma correta ?"

Pegue o projeto completo aqui: Lavanderia.zip

Filipenses 2:9 Pelo que também Deus o exaltou soberanamente, e lhe deu o nome que é sobre todo nome;
Filipenses 2:10
para que ao nome de Jesus se dobre todo joelho dos que estão nos céus, e na terra, e debaixo da terra,

Filipenses 2:11
e toda língua confesse que Jesus Cristo é Senhor, para glória de Deus Pai.

Referências:

José Carlos Macoratti