Há algumas soluções alternativas para evitar o uso de variáveis públicas, por exemplo:

 

  • Context Object – Essa técnica consiste em criar uma classe que contém todas as variáveis de um determinado contexto. Ao invés de ter diversas variáveis publicas, cria-se uma classe com todas as variáveis relativas ao mesmo contexto e mantém-se apenas o objeto da classe público. Todo acesso necessário será centralizado nesse objeto.

 

  • Injeção de dependência – é a técnica utilizada para diminuir o acoplamento de classes quando uma determinada classe depende de outra. Em poucas palavras é passar uma classe que será utilizada para outra que irá consumi-la.

 

Por exemplo, se a ClasseA necessita utilizar a ClasseB, ao invés da ClasseA instanciar a ClasseB ou de passar por parâmetros cada variável da ClasseB, a ClasseA simplesmente recebe uma intância da ClasseB como parâmetro e utiliza. Dessa forma a ClasseA não precisa saber como instanciar a ClasseB e também não é impactada por futuras alterações na implementação da ClasseB.

 

Através disso, ao invés de passar diversos parâmetros entre as funções e métodos, passa-se apenas o objeto que permite o acesso às suas propriedades internas.

 

  • Statefull Procedures – É uma das formas de aplicação da técnica de Context Object.  Ao invés de manter diversas variáveis públicas, criam-se variáveis estáticas que serão manipuladas por funções ou métodos e quem precisar utilizá-las terá acesso apenas às funções e métodos que por sua vez enxergariam as variáveis. Um exemplo disso é a MATXFIS.PRX.

 

  • Base de dados, TupleSpace ou Serviço de distribuição de dados –  Essa técnica substitui o uso de variáveis públicas por arquivos ou uma tabela no banco de dados, por exemplo. Uma aplicação disso é a utilização dos parâmetros MV’s. Ao invés de carregar uma série de variáveis na memória na inicialização do sistema, mantêm-se as configurações na SX6, e essa é acessada quando necessário.

 

  • Sem rótulos