Eu sou Augusto Galego eu falo bastante sobre software se você tá interessado no assunto Dá um subscribe aí embaixo e um like PR me ajudar e como esse vídeo não tem Patrocínio eu tô recomendando o livro arquitetura de software às partes difíceis vai ter um link afiliado ali embaixo na descrição Se você comprar esse livro você vai estar ajudando esse canal e você vai est se ajudando porque ele vai te ajudar a ser um desenvolvedor de software melhor principalmente no que tange os assuntos de arquitetura de software e System design se você me acompanha faz
um tempo você sabe o que que eu penso sobre tipagem dinâmica principalmente em serviços que vão escalar bastante Eu acho minha ideia é bem estúpida eu acho que JavaScript é péssimo pra gente escalar muito se a gente não usar JS doc ou typescript e eu acho que Python também sem nenhum tipo de link sem nenhum mypy ou rough vai ser péssimo para escrever aplicações grandes uma das coisas que eu Definitivamente não gosto em código de Python que eu vejo muito é abusar de dictionaries vamos vamos dar um exemplo aqui de Por que que eu não
gosto disso se a gente tem aqui uma variável chamada data e esse data é um Dictionary deixa aumentar um pouco que vem de algum lugar essa informação em algum moment entro no código a gente vai estar populando esse Dictionary e acessando as variáveis dentro dele depois vou imaginar que no nosso data aqui eu vou ter pad que vai ser qualquer coisa aqui é outro Dictionary não não importa muito o que que tem nesse outro Dictionary e vamos também adicionar um token pode ser 1 2 3 V adicionar aqui um status por exemplo que vai ser
sei lá um se eu sei de antemão tudo que eu vou ter no meu Dictionary e E assim se a gente for acessar depois isso na aplicação a gente vai ter que saber de antemão O que que tem dentro do dictionar o que que é esperado que tenha dentro desse Dictionary quando a gente for acessar isso aqui se esse data tiver em outro arquivo um arquivo que eu não consigo enxergar se ele tiver sendo populado por uma API externa de um modo que eu não tenho visualização nos campos que tem aqui dentro pode ser que
eu dê um data PG e payload e pode ter um typo aqui pode ser que eu escreva payload de maneira errada quando eu tentar printar o meu data.get payload aqui e vamos dar um Run nesse arquivo eu vejo que o meu print aqui deu non se a gente tivesse sei lá é um value aqui e o nosso value é r$ 3 e eu tento dar um data.get value + 20 e atribuir isso aí a uma variável X por exemplo isso daqui vai funcionar certo só que é V não print em x só que isso daqui
não tá legal isso daqui não tá seguro Claro é ele sempre vai funcionar se eu sempre tiver meu value se eu sei que eu tenho o meu value aqui só que se eu não tiver esse value se eu não vier por algum motivo eu meio que não tenho como prever esse erro de antemão eu não tenho como prever que isso daqui vai retornar non Claro você pode e adicionar aqui um default né caso Não retorne o valor mas eu não gosto disso Isso joga muita responsabilidade pra mão do desenvolvedor saber exatamente o que que tem
dentro daquele Dictionary e isso causa uma dificuldade adicional no no get desses valores né No momento que a gente vai acessar esses valores eu preciso ter um cuidado adicional para garantir que o valor sempre tá ali ou que se se o valor não tiver ali eu tenho um default tem uma série de comportamentos que eu preciso me preocupar com que podem ser resolvidos através da gente não usar um Dictionary e da gente usar uma data Class Então vamos dar aqui um @d Class vamos importar aqui da Class data classes e vamos fazer Class data e
aí dentro dessa Class data né eu vou ter algumas coisas eu vou ter um payload que vai ser um dict eu vou ter um token que vai ser um int eu vou ter um status que também vai ser um int e eu vou ter um value que também vai ser um int Qual que é a vantagem de usar uma data Class assim ao invés de usar um data solto quando eu inicializar a minha variável aqui data eu vou fazer data é igual a data aí payload é igual a alguma coisa token é igual a 1
2 3 status é igual a 1 value é igual a 30 e eu posso tratar esses dados no momento que eu pegar eles de uma ap externa eu posso fazer um tratamento e eu posso inicializar essa data Class aqui data E aí eu não preciso estar mais adivinhando se os valores vão estar ali ou não porque olha um negóci interessante que acontece em todas as ideas que é Se eu tentar acessar a variável uma variável aleatória que não existe ele vai dar aqui que essa variável é n Se eu tentar acessar aqui a variável value
já ficou azulzinho e já me diz aqui que é int Isso é o que vai me proteger do erro porque eu tenho certeza que o int eu consigo somar com outro int eu não tenho a menor dúvida de que o value sempre vai ser inte e eu vou conseguir rodar isso daqui sem nenhum problema Claro aqui a gente esbarra em mais um problema de p né que é esse daqui se eu atribuir o meu value se eu disse que ele era int na data Class e eu atribui a ele um valor de string Ah isso
aquii eu acho que vai funcionar né Eu acho que eu consigo printar aqui o meu data eu não não lembro porque faz tempo que eu não faço isso e eu acho que vai dar problema ali embaixo Então vamos printar o meu printar meu data é o meu data foi printado com sucesso e isso daqui causou um problema aqui embaixo então novamente é uma crítica ao Python que eu dei o Type hint de que é um int só que aqui eu não coloquei um Wind a gente precisa que o linter pegue isso né Depois eu posso
fazer outro vídeo explicando como que se faz um setup de um linter legal pra Python para prevenir esse tipo de erro mas o legal da data Class é que ele vai permitir com que o seu acesso aos dados seja mais mais fácil eu não vou precisar est dando get aqui e colocar default nem nada do tipo eu tenho o meu data.on value E aí eu não preciso ficar dando get nos atributos de um dicionário que eu acho uma prática bem ruim eu acho que se a gente puder evitar o máximo possível usar dictionaries não tipados
e fazer tudo numa data Class Ou uma named tuple ou algo nesse sentido é muito melhor aí Claro é você pode ver aqui que nesse data não tem value o value não existe o que a gente pode fazer então é usar o optional e dizer que o nosso value aqui ele é opcional eu não necessariamente sempre vou ter o meu value o meu value ele vai poder ser int ou ele vai poder ser None então aqui embaixo a minha própria ideia ela vai me dizer ó aqui o value pode ser in ou ele pode ser
Nan também E aí claro eu vou quando eu fizer essa soma daqui né seria legal eu primeiro ver se se data existe se value existe para aí eu poder fazer minha soma né que aí se eu vejo que ele existe ó a ideia Já é inteligente ela já me diz que é in aqui então eu não vou ter mais o erro de tentar somar non com 20