Banco de Dados

27 nov, 2019

Você tem um minuto ou dois, para falar de Code Smells? — Parte 1

Publicidade

Olar, provavelmente você já tenha estudado muito sobre o que são boas práticas de programação, nesta série de artigos irei explicar de forma mais detalhada o que NÃO FAZER no desenvolvimento de software, explicando o que são alguns Code Smells que talvez grande parte das pessoas desenvolvedoras já tenha feito alguma vez na vida.

Primeiramente, o que são Code Smells?

São sintomas de superficiais de um problema mais profundo no seu código, você pode ver uma definição mais completa neste artigo do Martin Fowler: https://martinfowler.com/bliki/CodeSmell.html

Esta série de artigos irá demonstrar alguns Code Smells que podem ocorrer em diversas linguagens de programação e dar umas dicas de como resolvê-los.

Neste primeiro artigo vou falar do tipo Bloaters do Code Smell:

Bloaters são códigos,métodos e classes que com o decorrer do tempo tomaram proporções gigantescas que dificultam o sistema de ser manutenível e escalável. Geralmente só percebemos esse tipo de smells quando o sistema cresce e fazer uma alteração ou adicionar uma nova feature. São aqueles códigos que são escritos “da forma errada”, e viram um débito técnico que, com o decorrer do tempo só aumenta.

O primeiro exemplo de Code Smell do tipo Bloater é o Data Clumps (Agrupamento de todos):

Muitas vezes partes diferentes de código contém grupos idênticos de variáveis (parâmetros de configurações, rotas de acesso, etc), o ideal é que esses grupos sejam transformados classes para serem acessados sem a repetição desses mesmos parâmetros em várias partes do código.

Geralmente ocorre pela falta de uma estrutura modularizada e frequentes “copy and paste” ao longo do desenvolvimento.

Como corrigir esse problema?

Aqui algumas sugestões do que fazer nesses casos:

  • Realizar Preserve Whole Object (quando temos vários valores de um objeto e o passamos como parâmetro para um método, podemos passá-lo como um objeto contendo esses dados, mais detalhes sobre essa técnica em: https://refactoring.guru/preserve-whole-object).
  • Aplicar Introduce Parameter Object (quando seus métodos contêm um grupo de parâmetros repetidos,podemos substituir ele por um objeto, um pouco semelhante ao anterior, mais detalhes em: https://refactoring.guru/introduce-parameter-object)
  • Se a repetição desses campos fazer sentido estar em uma classe separada para acesso a esses dados através de Extract Class (quando uma classe está fazendo o trabalho de duas, não está seguindo o princípio da responsabilidade única (SRP),podemos extrair esses métodos para uma nova classe e inserir todos os métodos e campos referentes a sua funcionalidade, mais detalhes em: https://refactoring.guru/extract-class).

Esse foi um tipo de Code Smell, nos próximos artigos irei abordar outros, segue algumas referências que utilizei e dicas de estudo sobre o assunto:


bliki: CodeSmell
A code smell is a surface indication that usually corresponds to a deeper problem in the system. The term was first…
martinfowler.com
Bloaters
Bloaters are code, methods and classes that have increased to such gargantuan proportions that they’re hard to work…
refactoring.guru
Data Clumps
Sometimes different parts of the code contain identical groups of variables (such as parameters for connecting to a…
refactoring.guru
bliki: DataClump
Whenever two or three values are gathered together – turn them into a $%#$%^ object. — Me (it was funnier with the…
martinfowler.com
Preserve Whole Object
Problem: You get several values from an object and then pass them as parameters to a method. Solution: Instead, try…
refactoring.guru
Preserve Whole Object
Edit description
refactoring.com
Introduce Parameter Object
Problem: Your methods contain a repeating group of parameters. Solution: Replace these parameters with an object.
refactoring.guru
Introduce Parameter Object
Edit description
refactoring.com
Extract Class
When one class does the work of two, awkwardness results. Instead, create a new class and place the fields and methods…
refactoring.guru
Refactoring
You might have heard that classes should have a single responsibility. Even if you try to follow this dogma, in…
scrutinizer-ci.com
Extract Class
class Person { get officeAreaCode() {return this._officeAreaCode;} get officeNumber() {return this._officeNumber;}…
refactoring.com
Princípios SOLID: qualidade em programação em 5 conceitos
Os princípios SOLID são cinco princípios básicos de programação e design orientados a objetos, introduzidos por Uncle…
www.infoq.com
Princípios SOLID: SRP e sopa de letrinhas
Em programação de software a sigla SOLID tem ganhado cada vez mais importância. Trata-se de um acrônimo popularizado…
engineering.contaazul.com