JavaRush /Blogue Java /Random-PT /Variáveis globais em Java: quando usá-las?
Анзор Кармов
Nível 31
Санкт-Петербург

Variáveis globais em Java: quando usá-las?

Publicado no grupo Random-PT
Olá! Neste artigo falaremos sobre variáveis ​​globais, sua declaração e exemplos de uso apropriado. Uma pequena observação: não consideraremos variáveis ​​de classe globais, ou seja, aquelas que podem ser acessadas dentro de qualquer classe. Falaremos sobre variáveis ​​globais de toda a aplicação - aquelas que podem ser acessadas dentro de toda a aplicação. Variáveis ​​globais em Java: quando usá-las?  - 1

Como criar variáveis ​​globais

Variáveis ​​globais são variáveis ​​acessíveis de qualquer lugar do aplicativo. Em outras palavras, seu escopo é toda a aplicação. Para criar tal variável em Java, você precisa criar uma variável estática pública em uma classe pública:
public class Example {
    public static int a;
    public static int b;
    public static String str;
}
As variáveis a​​e - tornaram-se globais b. strPodemos acessá-los diretamente de outras classes dentro da aplicação:
public class GlobalVarsDemo {
    public static void main(String[] args) {
        Example.a = 4;
        Example.b = 5;
        Example.str = "Global String variable value";

        System.out.println(Example.a);
        System.out.println(Example.b);
        System.out.println(Example.str);
    }
}
Se executarmos o método main, veremos a seguinte saída:

4
5
Global String variable value
As variáveis ​​globais podem ser divididas em 2 tipos:
  • variáveis ​​que podem ser editadas;
  • variáveis ​​que só podem ser lidas.
Estas últimas são chamadas de constantes globais. Para criar uma constante global, você precisa criar uma variável finale atribuir um valor a ela ao definir a variável:
public class Constants {

    public static final double PI = 3.1415926535897932384626433832795;
    public static final String HELLO_WORLD_STR = "Hello, World!";

}
De acordo com a convenção de nomenclatura Java, todas as constantes devem ser nomeadas em letras maiúsculas, separando as palavras com um caractere de sublinhado. Então, criamos constantes e agora não poderemos alterar seus valores: Variáveis ​​globais em Java: quando usá-las?  - 2Porém, podemos ler seus valores:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println(Constants.HELLO_WORLD_STR);
    }
}
Conclusão:

Hello, World!
public class ConstantsDemo {
    public static void main(String[] args) {
        double r = 10;
        String message = String.format("Площадь круга с радиусом %f=%f", r, getCircleSquare(r));
        System.out.println(message);

    }

    static double getCircleSquare(double r) {
        return Constants.PI * r * r;
    }
}
Conclusão:

Площадь круга с радиусом 10,000000=314,159265

Você deve usar variáveis ​​globais?

Existem muitos artigos na Internet cuja mensagem principal é esta: as variáveis ​​globais são más, más e terríveis. É realmente? Vamos tentar apresentar os prós e os contras das variáveis ​​globais para que todos possam tirar suas próprias conclusões. Variáveis ​​globais em Java: quando usá-las?  - 3Vamos começar com os contras. Vamos imaginar uma aplicação que possui uma classe com variáveis ​​globais que podem ser lidas e editadas. Com o tempo, cresce o número de classes no projeto, o número de variáveis ​​​​globais e métodos que utilizam variáveis ​​​​globais, ou seja, dependem delas. Com o tempo, cada variável global é lida em diferentes partes do sistema para finalidades diferentes. Em diferentes partes do sistema, o valor de uma variável pode ser atualizado. A imagem geral do mundo deste aplicativo torna-se significativamente mais complicada e isso leva às seguintes desvantagens :
  1. Legibilidade reduzida e maior dificuldade na compreensão do código.
  2. Maior complexidade de manutenção de código.
  3. Para alterar uma variável global, é necessário analisar todo o código para não definir a variável com um valor inválido para outras partes do sistema.
  4. Aumento de erros muito difíceis de depurar.

    Vamos imaginar uma variável global, um array de objetos. Em uma parte do sistema, por exemplo, são esperadas strings neste array, e em outra parte do sistema, alguém decidiu usar números de ponto flutuante. É improvável que alguém queira entender isso.

  5. Os nomes das variáveis ​​podem ser os mesmos se você usar variáveis ​​globais em seu código, assim como algumas bibliotecas que, por sua vez, também usam variáveis ​​globais. Isso pode levar a erros tanto no lado do seu aplicativo quanto no lado da biblioteca que você está usando.
  6. Aumenta a conectividade entre diferentes partes do sistema que utilizam variáveis ​​globais. Pelo contrário, você deve se esforçar para obter um acoplamento flexível do código. É melhor ter muitos subsistemas pequenos fracamente conectados uns aos outros do que ter uma coisa pesada. Porque é mais fácil para o cérebro lidar com várias coisas simples do que com algo muito complexo e confuso.
  7. Escrever testes unitários torna-se mais difícil porque o teste não sabe quais variáveis ​​globais são necessárias e como elas precisam ser inicializadas.
  8. Em aplicações multithread, o uso de variáveis ​​globais por diferentes threads leva a um aumento de erros difíceis de depurar e a um aumento na complexidade do projeto. Por conta disso, é necessário configurar de forma mais correta o acesso a tais variáveis, dotando-as de sincronizações e bloqueios. Isso pode levar a curtos-circuitos no futuro. Por exemplo, o thread A bloqueou a variável X para seu trabalho, e o thread B bloqueou a variável Y para seu trabalho, e o thread A agora precisa da variável Y e o thread B precisa da variável X. Como resultado, o programa irá congelar.
Mas tudo isso é impreciso. Esta é uma descrição de riscos, cuja probabilidade aumenta com o crescimento do projeto e o aumento do número de variáveis ​​globais nele. Vamos aos prós :
  1. Em projetos pequenos, as variáveis ​​globais são a coisa mais simples para fazer o projeto funcionar.
  2. Às vezes, o medo de usar variáveis ​​globais leva a uma complexidade ainda maior no projeto. Então os programadores começam a criar singletons e a recorrer a outros padrões de design.
  3. Na programação, muitas vezes você precisa confiar em alguns valores imutáveis.

    O mais razoável é escrever tais valores como constantes, pois somente constantes garantem que o valor de uma variável não mudará com o tempo. Essas constantes podem ser encontradas o tempo todo ( Integer.MAX_VALUE, Integer.MIN_VALUE, Boolean.TRUE, Collections.EMPTY_LISTetc.). Mas a programação não se limita ao uso de bibliotecas padrão. Muitas vezes acontece que você precisa escrever algum tipo de lógica única, que precisará contar com suas próprias constantes exclusivas. É por isso que às vezes o uso de constantes (variáveis ​​globais somente leitura) realmente facilita a vida.

Em geral, você não deve abusar de variáveis ​​globais; se possível, use apenas constantes. Foi dito anteriormente que usar variáveis ​​globais em pequenos projetos não é ruim. Mas é melhor para um desenvolvedor iniciante não usá-los. Por dois motivos:
  1. Tudo o que um desenvolvedor novato escreve é ​​essencialmente um projeto pequeno. E usar variáveis ​​globais em seus projetos irá ensiná-lo a usar variáveis ​​globais em todos os lugares.
  2. É melhor primeiro aprender a prescindir de “truques proibidos”. E com a experiência, a compreensão de quando é apropriado usar tais técnicas surgirá por si só.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION