Article image
Bryan Corrêa
Bryan Corrêa26/07/2023 20:46
Compartilhe

Potência Tech powered by iFood | Ciência de Dados: minha entrega do primeiro desafio

  • #GitHub
  • #Git
  • #Python

Introdução

Quem faz o bootcamp "Potência Tech" na trilha Ciência de Dados sabe que o primeiro desafio que temos que desenvolver é bem legal: o sistema de um banco fictício que seja capaz de realizar as operações de saque, depósito e extrato. O desafio é bastante condizente com o que foi apresentado nas aulas até aquele momento. Aqui, compartilharei um pouco sobre a experiência ao resolver esse desafio e compartilharei o link para o repositório para que vocês possam vê-lo e me dar suas impressões sobre o programa em si e sobre o repositório.

Minha experiência ao desenvolver o "DIO Bank System"

A experiência de realizar o desafio foi incrivelmente enriquecedora, e gostaria de compartilhar os principais aprendizados e desafios enfrentados ao criar esse sistema proposto. O desafio consistia em desenvolver um sistema que permitisse aos usuários realizar operações bancárias básicas, como depósito, saque e exibição do extrato da conta. Essas funcionalidades deveriam ser implementadas em Python.

Eu tenho algum (pequeno) conhecimento em Python, pois estudei um pouco sobre a linguagem há algum tempo. Por isso, decidi utilizar algumas coisas que não haviam sido abordadas nas aulas até o momento do desafio. Uma dessas coisas foi particionar o "problema" em funções. Assim, criei uma função para cada operação que o sistema deveria fazer, buscando deixar o código mais organizado para facilitar sua manutenção. Hoje, após avançar mais na trilha de Python no bootcamp, vi que o segundo desafio pede que as funcionalidades sejam colocadas em funções e, portanto, já tenho essa parte adiantada, hehe.

Outras ideias e desenvolvimento do desafio

Inicialmente, preocupei-me em fazer "apenas" o que havia sido proposto no desafio para garantir uma boa funcionalidade. Após isso, comecei a pensar em implementar algumas ideias, como a criação de uma lista para guardar cada transação realizada. Eu até pensei em utilizar uma estrutura de dados mais robusta (dicionário), mas não achei que seria necessário, visto que sinais matemáticos ("-" para saque e "+" para depósito) demonstrariam o tipo de transação realizada com fácil entendimento.

Outra preocupação que tive após garantir a funcionalidade do sistema foi com a validação da entrada de dados realizada pelo usuário. Por isso, garanti que apenas números positivos possam ser digitados pelo usuário para realizar saque e depósito, assim como apenas as opções disponibilizadas no menu de transações poderiam ser aceitas no programa. Isso fez com que eu pensasse no tratamento desses erros, o que me fez optar pelo uso da estrutura `try... except` e pelas soluções mais simples para cada problema, além de retornar mensagens claras para os erros.

Uma decisão um tanto "polêmica" que tomei foi não trabalhar com argumentos nas funções, mas sim com variáveis globais dentro delas. Apesar de não ser uma das melhores práticas, era uma solução muito mais simples do que usar redirecionadores ou variáveis de suporte para encaminhar a informação digitada pelo usuário. Baseado na baixa complexidade da implementação e no baixo número de variáveis globais, fez mais sentido para mim tentar implementar dessa forma do que utilizar argumentos nas funções.

Documentação

Um dos pontos mais importantes que aprendi com esse projeto - e com algumas outras coisas que já fiz na vida - foi a importância da documentação. Comentários claros e descrições adequadas de funções foram essenciais para facilitar a compreensão do código e ajudar o futuro "eu" e outras pessoas a entender o que eu estava pensando ao desenvolver o desafio.

Conclusão

Ao concluir a implementação do DIO Bank System, foi muito gratificante testar o sistema e ver as operações funcionando conforme o esperado. Ver o extrato da conta exibindo corretamente todas as transações e o saldo atualizado após cada depósito ou saque foi uma sensação bacana.

No geral, criar o DIO Bank System foi uma experiência gratificante que me proporcionou uma visão valiosa sobre o desenvolvimento de projetos em Python. Aprendi a importância de seguir algumas boas práticas de programação, como tratamento de erros, uso de variáveis globais de forma consciente e documentação adequada do código. Essas habilidades serão extremamente úteis para futuros projetos e meu crescimento contínuo como desenvolvedor. Estou empolgado para aplicar esses conhecimentos em novos desafios e continuar aprimorando minhas habilidades em Python e programação de forma geral. Gratidão à DIO e ao iFood por tornarem isso possível. 🤗

Extra (e importante para mim)

Deixo aqui (clique no link) para o repositório no GitHub da minha resolução para o desafio. Peço para quem ler esse artigo até aqui que por favor vejam o repositório e compartilhem comigo o que acharam sobre a implementação e sobre a documentação que fiz via README do próprio desafio. Podem escrever no próprio GitHub - criei um guestbook para o repositório -, nos comentários desse artigo, e em qualquer outro lugar que tenha como entrar em contato comigo. Será muito enriquecedor para mim e, por isso, desde já agradeço! Até a próxima! o/

Compartilhe
Comentários (3)
Bryan Corrêa
Bryan Corrêa - 27/07/2023 11:45

Eu achei que o link para o repositório estava sublinhado no texto, Phelipe, mas acabei de ver que não está. O link era na palavra "aqui", no começo do item "conclusão". Acabei de arrumar isso lá. Deixo aqui o link para o repositório também: link.


Alex, o que você fez é uma melhor prática mesmo. Como expliquei no artigo, decidi usar a palavra reservada "global" dentro das funções para reutilizar as variáveis globais que eu havia criado no escopo global, pois elas seriam atualizadas a cada transação. Por haver poucas variáveis nessa situação e pelo desafio não ter sido "mais complexo", optei pelo uso de uma prática menos recomendada, mas fiz isso conscientemente e foi documentado no README.


Gratidão pelos seus comentários! o/

Phelipe Tisoni
Phelipe Tisoni - 27/07/2023 10:16

Eu não encontrei o link para ver o projeto, pode enviar nos comentários, por favor? Fiquei bem curioso para ver como ficou =)

Alex Aleluia
Alex Aleluia - 26/07/2023 22:26

Boa noite.

Eu pensei em usar global tmb, mas eu passei todas variáveis (constantes e argumentos) como parametros para funções.