Abstraia: pense, pense, pense!

Fabiano Santana
Tableless
Published in
5 min readApr 3, 2019
Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software. — Wikipedia

Atualmente existem diversos tipos de profissionais no mercado de tecnologia que estão ligados ao desenvolvimento de software, alguns exemplos são:

  • Estagiário
  • Programador (Trainee, Junior, Pleno, Sênior e God)
  • Analista de Sistemas ( Junior, Pleno e Sênior)
  • Arquiteto

E por aí vai…

São diversos profissionais que podem estar envolvidos na construção de um produto e todos eles possuem uma coisa em comum: em algum momento eles encararão um problema e precisarão parar e pensar.

Como construtores de software a capacidade cognitiva, abstração e raciocínio lógico são habilidades mais requeridas dos profissionais da área. Com tantas tecnologias, stacks, automações, frameworks é difícil não se perder.

Pratique exercícios de lógica antes de aprender qualquer tecnologia, como no exemplo abaixo:
Qual o fatorial do número(n)?
Usaremos o número 9 para o exemplo, o fatorial do número 9! é :
9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 = 362.880

Se você conseguiu perceber um padrão você está a um passo de começar sua carreira como programador. O padrão do fatorial é pegar o número(n) e multiplicá-lo por todos os números positivos menores que ele.

Para implementar no sistema ficaria como o código a seguir:

Em apenas uma linha de código, temos uma função que calcula o fatorial de qualquer número positivo.

Pense, logo programe

Muitas vezes nos deparamos com situações embaraçosas ao tentar resolver um problema. Todo problema pode ser resolvido de diferentes formas e não tem como mensurar a melhor solução. Porém, isso não quer dizer que você SEMPRE pode resolver um problema de qualquer jeito. Quando se deparar com um problema não o veja como inimigo, afinal, se eles não existissem o mundo seria perfeito e você não teria emprego.

Uma dica prática de como resolver um problema que parece não ter solução é: deixe esse problema um pouco parado, não force sua mente a encontrar uma solução imediata, fazendo isso você estará se pressionando e se afastando de uma solução. Outra coisa, não desista TUDO tem solução.

No exemplo do fatorial resolvemos utilizando recursividade.
Veja outras formas que poderiam resolver o mesmo problema:

Cada uma com seu nível de complexidade de implementação e lógica.

Veja os padrões

Quando você inicia sua jornada em uma nova empresa, dificilmente você criará um projeto a partir do zero, o comum é ter um projeto em andamento e você dará sequência a esse projeto. Ao dar sequência a um projeto existente você precisará observar os padrões que existem antes de implementar algo. NÃO mude o padrão a não ser que seu superior peça, esse é um dos maiores problemas com a alta rotatividade de desenvolvedores em uma empresa, cada pessoa tem uma forma de pensar, sendo assim, cada um cria as coisas do jeito que acha conveniente e o projeto acaba virando um frankenstein com tantas anomalias no código.

Observe um exemplo de nomenclatura frankenstein:

// Quem criou o projeto
public string UserName { get; set; }
// Pessoa que entrou para continuar o projeto
public string sobrenomeUsuarioSistema { get; set; }

No exemplo acima, vimos que existia um padrão definido seguindo o guia de convenções em declaração de variável (no caso as convenções da linguagem C#) e o novo funcionário não se preocupou em pesquisar as melhores práticas antes de implementar.

Em tudo existe um padrão e enxergar eles é uma habilidade que você precisa praticar, procure por padrões no seu dia a dia. — Fabiano Santana

Enxergue as semelhanças

Agora vamos além, finalmente vamos abstrair.
Repare nas fotos abaixo:

À primeira vista estes três elementos parecem não haver semelhanças, porém vou listar algumas das ações e características que eles possuem em comum:

Mamíferos

Ao enxergar essas semelhanças podemos abstrair e trabalhar com herança e polimorfismo, visualize abaixo como seria a implementação das classes:

Abstraia!

Procure por semelhanças, se você tem oportunidade de criar algo que poderá reutilizar posteriormente, crie.

Conclusão

Seja o autor do seu código, busque pelas melhores práticas para implementação, abstraia seus métodos, classes, reuse. Não seja apenas um replicador de código que você encontrou na internet.

Dicas

Para convenções de padrões em criação de classe, variável, métodos e etc …visitem os sites abaixo:

Sobre o autor da publicação

Sou Fabiano Santana, tenho 22 anos. Arquiteto de Soluções e Analista de Experiência do Usuário, conhecido como o famoso desenvolvedor Full Stack (prefiro chamar de fullydev) e UX Design. Amo de coração criação de UI e como ela aproxima as pessoas.

Seguem meus contatos caso queiram tirar alguma dúvida ou fazer sugestões para melhoria.

Ou então se quiser me seguir no instagram

https://www.instagram.com/fabsanttana/

Abraços

--

--

Fabiano Santana
Tableless

Arquiteto de Software .NET / Full Stack .NET Developer / Flutter Developer & UI Designer