Executando verificação de segurança...
2

ABSTRAÇÃO, entendendo de forma simples como reduzir a carga cognitiva de uma função.

Certa vez lendo o livro Clean Code do Uncle Bob me deparei com uma frase do tipo: "Um bom programador é aquele que programa para outro programador entender e não somente o computador" que me fez refletir sobre ser um programador e ser um bom programador.
Acho que todos aqui deve estar cansado sobre o tema de Clean Code mas se não fosse tão importante não seria repetido varias vezes, não é mesmo?

O que é abstração?

Em suma é deixar o seu código menos complexo escondendo os detalhes de implementação, que podem ser feito por classes ou até mesmo funções.

Bad: Veja como a função parseBetterJSAlternative tem várias responsabilidades ferindo o Single responsibility principle, lembrando que uma função ideal segundo Uncle Bob deve ter no máximo 8 linhas.

function parseBetterJSAlternative(code) {
 const REGEXES = [
   // ...
 ];
 
const statements = code.split(" "); const tokens = []; REGEXES.forEach(REGEX => { statements.forEach(statement => { // ... }); });
const ast = []; tokens.forEach(token => { // lex... });
ast.forEach(node => { // parse... }); }

Good: Agora veja como a carga cognitiva foi reduzida e os detalhes de implementação foram escondidos fazendo as devidas abstrações para funções. Quando você tem mais de um nível de abstração, sua função geralmente está fazendo muito. A divisão de funções leva à reutilização e testes mais fáceis.

function parseBetterJSAlternative(code) {
  const tokens = tokenize(code);
  const syntaxTree = parse(tokens);
  syntaxTree.forEach(node => {
    // parse...
  });
}

function tokenize(code) { const REGEXES = [ // ... ];
const statements = code.split(" "); const tokens = []; REGEXES.forEach(REGEX => { statements.forEach(statement => { tokens.push(/* ... */); }); });
return tokens; }
function parse(tokens) { const syntaxTree = []; tokens.forEach(token => { syntaxTree.push(/* ... */); });
return syntaxTree; }

Aqui podemos ver que abstrações podem nos ajudar a entender melhor o que está acontecendo de fato no código, lembrando que cada função deve ter apenas um nível de abstração, há vários outros exemplos que podemos citar, me embasei nesse lendo o Livro Clean Code de Robert C. Martin (Esse é meu primeiro post no TabNews, ainda não manjo mt de formatação aqui, porém espero ajudar a comunidade, abraço!)

Carregando publicação patrocinada...
1
1
1

Gostei bastante da forma que você exemplificou o conceito de abstração. Sou novo na programação e comecei a ler o Clean Code e confesso que fiquei em dúvida em diversos assuntos, principalmente por conta de não manjar muito do inglês.

Como o Tabnews tem esse objetivo em trazer conteúdo em PT-br, gostaria de ver mais conteúdos relacionados ao tema por aqui.

1