DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

1

Limite os arquivos fonte

Esta é uma série baseada no entendimento de tópicos relacionados ao livro Java Efetivo Capitulo 4 Item 25: Limite os arquivos fonte a uma única classe de nível superior

Embora o compilador Java permita várias classes de nível superior em um único arquivo fonte, isso traz riscos significativos e nenhuma vantagem associada.

A definição de múltiplas classes de nível superior em um arquivo fonte pode resultar em várias definições para uma classe, dependendo da ordem em que os arquivos são passados para o compilador.

Riscos Associados:

Se ocorrerem múltiplas definições para uma classe, o comportamento do programa pode ser afetado pela ordem dos arquivos fonte passados para o compilador.
Exemplo de Risco:

Um exemplo é apresentado onde um programa tem uma classe Main referenciando membros de duas outras classes, Utensil e Dessert.
Se essas duas classes forem definidas em um único arquivo fonte e acidentalmente em outro arquivo fonte separado, isso pode levar a problemas de compilação e comportamento inconsistente do programa.

Solução:

A solução para esse problema é simples: dividir as classes de nível superior em arquivos fonte separados.

Se houver tentação de inserir várias classes de nível superior em um único arquivo fonte, considerar o uso de classes membro estáticas como uma alternativa para manter a legibilidade e reduzir a acessibilidade das classes.

Importância da Boa Prática:

Seguir a prática de limitar os arquivos fonte a uma única classe de nível superior garante que não haverá múltiplas definições para uma única classe durante a compilação.
Isso garante que os arquivos de classe gerados e o comportamento do programa resultante sejam independentes da ordem dos arquivos fonte passados para o compilador.

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more