Skip to content

Tag-icone-mini.png Programação, Genexus

Referenciado por: Análise para terminais de pré-venda web | Dicas Técnicas | Funções e Métodos Úteis no Genexus | Métodos de Atualização de Dados em Genexus |

Os seguintes itens são visados com a implantação deste padrão:

  • Aumentar a velocidade de programação;
  • Facilitar a manutenção do sistema;
  • Reduzir erros de programação;
  • Identificar e localizar mais rapidamente os erros de execução e programação;
  • Facilitar o desenvolvimento em conjunto;
  • Melhorar a qualidade dos sistemas.

Organização da KB ​

De maneira geral as KBs devem ser organizadas da seguinte forma:

Objects/
  >>> ContextManagement/
  >>> DataProviders/
  >>> DataSelectors/
  >>> <Funcionalidade>/
  >>> <Funcionalidade><Tipo de Objeto>/
  >>> Java/
  >>> Procedures_<Funcionalidade>/
  >>> SDTs/
  >>> Security/
  >>> SubTipos/
  >>> <Divisão por Categorias, Grupos do Alfabeto, Funcionalidades, etc.>/
  >>> Transacoes/
  >>> WebPanels/

Observe que é interessante agrupar objetos de uma determinada funcionalidade.
É essencial não misturar em uma mesma pasta objetos de diferentes DataStores.

ContextManagement ​

Tratar aqui as várias informações que podem ser armazenadas no contexto.

Se a funcionalidade só se tratar de objetos do mesmo tipo, ou pouco objetos, como é o caso do ContextManagement, não é necessário criar subdivisões por tipo de objeto.

Procedures_ ​

Essa é uma forma interessante de subdividir objetos em funcionalidades sem criar muitos níveis.

SubTipos ​

Como subtipos existem em grande quantidades, é interessantes subdividi-los de alguma forma.

Transacoes ​

Colocar aqui dentro as Transactions, Data Views e deixar os prompts gerados automaticamente.
Prompts manuais devem ser passados para a pasta WebPanels.

WebPanels ​

Colocar aqui WebPanels e WebComponents.

Nomenclatura dos Objetos ​

Deve-se atentar para as seguintes orientações na hora de criar um nome de um objeto.

Tipo de objetoDescriçãoExemplos
Procedures

Procedures em Genexus podem ser função e podem ter sua estrutura de parâmetro modificada rapidamente.
Para não confundir não devemos usar nomenclaturas padrão de linguagem orientada a objetos.
Ao invés disso, devemos dar um nome com iniciais maiúsculas que signifique o processo a ser realizado por ela.

GravaTabela
 deduz-se que ela vai gravar alguma informação.
LeTabela
 deduz-se que ela apenas fará leituras.
AtualizaCusto
 deduz-se que ela vai atualizar alguma informação que já existe.
CalculaValor
 deduz-se que ela vai receber ou ler dados e vai retornar um ou mais valores calculados.

WebPanels

Em telas normais utilizar o prefixo "WP_".
Quando a tela for especificamente de pesquisa utilizar o prefixo "Prompt_".
Além disso, o padrão em telas de pesquisa é usar a tabela principal a ser pesquisada após o "Prompt_".

WP_Config
 Tela de configuração.
Prompt_Parceiros
 Pesquisa de parceiros.

WebComponents

Utilizar o prefixo "WC_".

WC_CaixaTotais

DataProviders

É incentivado o uso de DataProviders para reaproveitamento de pesquisas e organização do código.
Usar o nome no plural quando o retorno for collection.

DP_Clientes
 Retorna lista de clientes.
DP_Cliente
 Retorna 1 registro de cliente.

SDTs (StructuredDataTypes)

Utilizar o prefixo "Sdt_".
Usar o nome no plural quando o retorno for collection.

Sdt_Registros
 Representa uma lista de registros.
Sdt_Registro
 Representa um registro.

DataSelectorsUsar prefixo "DS_".dsBuscaCliente
SubtypeGroups

Nome pode ser a concatenação da tabela de origem com tabela de destino.
Ou pode ser a tabela de origem com uma especificação de negócio.

Cliente_Usuario
Cliente_Vendedor

Boas Práticas ​

  • Usar DataProviders para reaproveitamento de consultas.
  • Criar variáveis de transação mais amigáveis. Ex.: transação TT_CLI criar &TtCli ou &cli.
  • Evitar uso de letras maiúsculas no código fonte.
  • Usar log em arquivo texto para não interferir nas transações de banco.
  • Tratar erros de gravação.
  • Usar nomenclaturas de acordo com a tabela deste artigo.
  • Usar nomes simples e claros para Procedures.
  • Em webpanels ou procedures, agrupar variáveis por prefixo. Parâmetros podem começar com p [pCodfil]. Variáveis de tela podem começar com f [fCodfil].
  • Usar SDTs em parâmetros de Procedure. Obs.: os SDTs são sempre inOut, independentemente do que está definido no Parm. WebPanels não recebem SDTs como parâmetro de entrada.

Outros Artigos ​

Veja também: