Prefira as classes membro estáticas
Tags: java, javaefetivo, development, programming
Published: 2024-03-28 22:26:25

Esta é uma série baseada no entendimento de tópicos relacionados ao livro Java Efetivo Capitulo 4 Item 24: Prefira as classes membro estáticas às não estáticas

Há quatro tipos de classes aninhadas: classes membro
estáticas , classes membro não estáticas , classes anônimas e classes locais
. Todas, exceto o primeiro tipo, são conhecidos como classes internas . Esse Item lhe explica quando usar qual tipo de classe aninhada e o porquê.


**Classes Membro Estáticas:** São classes definidas dentro de outras classes, mas não associadas a instâncias específicas da classe envolvente. Elas possuem acesso aos membros da classe envolvente e são úteis para definir classes auxiliares, como enums que representam operações de uma calculadora.

**Classes Membro Não Estáticas:** Também são definidas dentro de outras classes, mas estão associadas a instâncias específicas da classe envolvente. Cada instância de uma classe membro não estática está implicitamente ligada a uma instância envolvente. Essas classes são úteis para representar adaptações de objetos externos e geralmente ocupam espaço e tempo extras devido à associação com a instância envolvente.

**Escolha Entre Estático e Não Estático:** Se uma classe aninhada precisa de referência à sua instância envolvente, deve ser não estática; caso contrário, deve ser estática. Uma classe membro estática é preferível quando não há necessidade de acesso à instância envolvente. Evitar classes não estáticas desnecessárias reduz o risco de vazamento de memória e facilita a compreensão do código.

**Classes Anônimas**: Classes sem nome que podem ser declaradas e instanciadas no mesmo ponto do código. São úteis para criar pequenos objetos de função, objetos de processo na hora e implementar métodos static factory. Devem ser curtas para manter a legibilidade.

**Classes Locais:** São classes definidas dentro de métodos e têm escopo e regras de uso semelhantes às variáveis locais. São menos comuns que os outros tipos de classes aninhadas, mas podem ser úteis quando uma classe precisa ser visível fora de um único método ou é muito longa para caber confortavelmente dentro de um método.

Em resumo, a escolha entre os diferentes tipos de classes aninhadas depende das necessidades específicas de cada situação, com considerações sobre o escopo, associação com a instância envolvente e legibilidade do código.

_**Preferir classes membro estáticas às não estáticas traz vantagens importantes, principalmente porque reduz o risco de vazamento de memória e facilita a compreensão do código. Aqui estão alguns pontos destacados do texto que explicam por que é melhor preferir classes membro estáticas:**_

**Evita Vazamento de Memória:** Classes membro não estáticas mantêm implicitamente uma referência à sua instância envolvente, o que pode levar a um vazamento de memória se não forem gerenciadas corretamente. Ao tornar uma classe membro estática, você evita essa referência implícita e reduz o risco de vazamento de memória.

**Melhora a Legibilidade do Código:** O uso de classes membro estáticas simplifica a estrutura do código, tornando mais fácil para os desenvolvedores entenderem o relacionamento entre as classes envolvidas. Isso porque não há a necessidade de considerar a associação com a instância envolvente ao trabalhar com uma classe membro estática.

**Melhora o Desempenho:** Classes membro estáticas não têm a sobrecarga de manter uma referência à instância envolvente, o que pode resultar em melhor desempenho, especialmente em cenários de criação e destruição de objetos.

**Melhora a Manutenção do Código:** Ao reduzir a complexidade do código e evitar vazamentos de memória, o uso de classes membro estáticas torna o código mais fácil de manter e modificar no futuro.

**Portanto, ao preferir classes membro estáticas em vez de não estáticas, você está adotando uma prática que promove a robustez, a clareza e a eficiência do código.**