Programação Orientada a Objetos com Go: Uma Jornada Necessária

Buenas cara pessoa que está lendo este artigo, me desculpe se aqui juntou um pouco de poeira esses útimos dias, na verdade meses, mas me deixe compartilhar aqui uma ideia que tive, vamos la?
Pois bem, estou finalizando a leitura do livro Fundamentos of Software Architecture, que ao ler ele e me aprofundar em como as arquiteturas são pensadas, suas características, prós, contras entre outras coisas me veio diversas vezes o clique mental de "então aqui, usar dessa forma por conta do Programação Orientada a Objetos e com esse padrão de design faz sentido" e daí eu começo a encaixar peças e mais peças e tudo faz muito sentido, bem ao estilo mindblowing.
Mas não me entenda mal também, não vim evangelizar POO, ou padrões de projeto algum, a ideia é poder mostra como fazer em Go. Muita gente vem de outras linguagens mais "clássicas" nesse paradigma e acaba estranhando a abordagem do Go. Então, a ideia desse série de artigos, sim será uma série já que este post é apenas uma introdução, será desmistificar isso e entender como aplicar os princípios da POO.
E se você não vem de uma linguagem dessas, e talvez até mesmo Go seja a sua primeira linguagem, pode ficar em paz, que a série abordará bem os temas e não será somente para pessoas que já programam, tudo bem?
Mas, por que mesmo falar de POO em Go?
Bem, se você já programou em Java, C# ou até Python, provavelmente está acostumado com classes, herança e aquele monte de coisa que define a POO tradicional. Mas o Go tem uma forma diferente de lidar com tudo isso. Ele não segue a orientação a objetos da forma convencional, isso chega a incomodar algumas pessoas pela diferença, mas a linguagem oferece ferramentas para modularizar, reutilizar e manter código de forma eficiente, inclusive se aproximar de POO.
Sem falar que aprender POO, ou mesmo reforçar seu conhecimento através de uma nova linguagem, vai lhe ajudar a manter sua base sólida. Lembra que comecei o artigo mencionando minha leitura sobre um livro de arquitetura de software? Pois é, não que uma coisa dependa estritamente da outra (mesmo achando que exista uma depêndencia ali) o que da para notar é que uma coisa tem impacto na outra, uma forma de programar pode afetar positiva ou negativamente uma aplicação ou escolha de arquitetura.
Tá, mas o que vamos explorar?
Vamos começar do começo (porque é sempre bom, né?): a ideiá da série é dar uma introdução sobre Programação Orientada a Objetos e por que ela ainda é relevante hoje em dia, spoiler já do próximo artigo eim?! Depoisa ideia é entrar já no Go e entender como ele lida com estruturas e métodos, que são a base para construir nossos objetos. Aqui vai ser bem rápido também, mas no artigo deixarei referências para poder se aprofundar no tema.
A partir daí, partimos para conceitos essenciais como encapsulamento e visibilidade, que ajudam a proteger os dados e garantir que os objetos se comportem do jeito certo. Também vamos falar sobre composição e interfaces, que são a alternativa do Go para substituir a herança tradicional e que, sinceramente, são bem mais flexíveis e fazem uma baita diferença no dia-a-dia.
E claro, não dá para falar de POO sem falar de polimorfismo! Vamos ver como aplicá-lo para criar código mais genérico e adaptável. E, já que estamos falando de boas práticas, vamos dar uma atenção especial aos princípios SOLID, que são essenciais para escrever software coeso, desacoplado e fácil de manter.
E depois da base, vem as boas práticas e padrões de projeto?
Depois de aprender os conceitos fundamentais, vamos explorar padrões de projeto e boas práticas que vão te ajudar a aplicar tudo isso no mundo real. Afinal, teoria é legal, mas ver a coisa funcionando na prática é o que realmente faz diferença e tentarei o meu máximo para trazer essa experência para você!
Se ao final dessa jornada junto comigo, você estiver mais confiante para aplicar a POO nos seus projetos em Go, criando software robusto, escalável, estarei bem contente. Mas não somente eu estarei feliz de ter te ajudar, mas você estará contribuindo com sua equipe para que tenham prazer em trabalhar em um código de melhor qualidade.
E tem algo depois ou além da POO?
Vale lembrar que POO não é o único paradigma de programação por aí. Tem muito mais coisa interessante para aprender, como programação funcional, que também tem seu espaço e pode ser combinada com a POO para resolver problemas de maneira mais elegante. Lembra que falei que não quero evangelizar a palavra do POO?! Minha ideia é, após toda essa série do POO, trazer o programação funciona também!
Bem, por hoje é só isso mesmo, espero que essa leitura tenha atiçado sua curiosiade de os artigos que estão por vir sejam uma experiência enriquecedora e que você consiga levar esse conhecimento para sua carreira. E, claro, se curtir, se inscreva na newsletter para ficar sempre por dentro das novidades em primeira mão e compartilha com a galera! Porque no final das contas, todo mundo cresce junto quando espalha o que aprende. Te espero no próximo artigo!