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;Referências: