Padrões e convenções de codificação em Centura
Desenvolvimento Pirâmide ERP
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Agenda
 Introdução
 Padrões de codificação
 Nomenclaturas
 Componentes visuais
 Convenções
 Tratamento de erros
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Introdução
 Objetivo
 Apresentar os padrões básicos para o desenvolvimento
dos sistemas que utilizam o Centura como linguagem.
 Documento referência (completo/detalhado)
 DA.07.Codificação em Centura
 Padrões abordados
 Pir21


Módulos: Faturamento e Integração
Pirâmide

Módulos: Comercial, Financeiro, Fiscal, Materiais, Orçamento,
Qualidade, ...
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Introdução
 Arquivos
Tipo de arquivo
Função
Libraries (*.apl)
Serão denominados a partir de agora de Apls. Nelas
são desenvolvidas todas as funcionalidades, telas,
classes, etc. Cada Apl deve conter apenas uma
funcionalidade, de forma a facilitar a manutenção.
Text (*.apt)
Serão denominados a partir de agora de Apts. São os
arquivos utilizados para geração de executáveis. Cada
módulo do sistema tem seu respectivo Apt.
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de
codificação
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Nomenclatura de arquivos
Tipo de arquivo
Nomenclatura
Apls
Deve fazer referência ao nome da funcionalidade que
ela possui. Exemplos:
• AjudaContexto.apl
• Pedido.apl
Apts
Devem fazer referência ao nome do módulo.
Exemplos:
• Integração.apt
• Ativo.apt
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Nomenclatura de variáveis
Padrão
Sintaxe
Pir21
<prefixoDoEscopo>_<prefixoDoTipo>NomeVariavel
Piramide
<prefixoDoEscopo><prefixoDoTipo>NomeVariavel
Escopo
Pir21
Global do Sistema
g
Global do Form
w
Local (funções)
Piramide
l
Tipo
Pir21
Piramide
Number
n
n
Date/Time
dt
dt
String
s
s
Sql Handle
hSql
hSql
Param. Entrada
p
p
File Handle
hFile
hFile
Param. Saída
r
r
Long String
ls
ls
a<tipoDado>
a<tipoDado>
Window Handle
h
h
Objetos
o
tob
Objetos Proxy
p
Array
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Nomenclatura de componentes visuais
Componente
PushButton
Pir21
pb
Piramide
pb
Scrollbar Horizontal
hsb
hsb
Scrollbar Vertical
vsb
vsb
CheckBox
cb
cb
RadioButton
rb
rb
DataField
df
df
MultilineText
ml
ml
gb
gb
Table
tbl
tbl
Column
col
col
ListBox
lb
lb
cmb
cmb
ax
ax
Background Text
GroupBox
ComboBox
ActiveX
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Nomenclatura de constantes
Tipo da Constante
Pir21
Piramide
PFM_NomeMsg
PAM_NomeMsg
Negócio
BOC_NOMECONSTANTE
NOMECONSTANTE
Sistema
PFC_NomeConstante
NOMECONSTANTE
Mensagens
Atributos de Classe
BOA_<Função>_NomeAtributo
Erros de Sistema
PFE_NomeErro
Err_NomeErro
Erros de Negócio
BOE_<Módulo>_NomeErro
Err_NomeErro
Mensagens de Erro
PFE_Msg_NomeErro
 Nomenclatura de funções
Tipo da função
Pir21
Piramide
Interna
PFNomeDaFuncao
Gx_NomeDaFunção
Externa
NomeDaFunção
fNomeDaFunção
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Nomenclatura de classes
Tipo da Classe
Pir21
Piramide
Concretas
CNomeClasse
CNomeClasse
Interfaces
INomeClasse
Proxy
NomeClasse
Visuais
W<TipoClasse(2letrasMinus
culas)>NomeClasse
Negócio
BCNomeClasse
tobNomeClasse
BCBaseNomeClasse
BCBaseNomeClasse
Básicas de Negócio
Tipo do atributo
Classe
Instância
Tipo do método
Pir21
Piramide
c_<prefixodetipo>NomeVariável
m_<prefixodetipo>NomeDaVariavel
Privado
Pir21
__NomeDoMétodo
Piramide
__fNomeDoMétodo
Públicos
NomeDoMétodo
fNomeDoMétodo
Virtuais
_NomeDoMétodo
_fNomeDoMétodo
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Componentes visuais (1/3)
Componente
PushButton
Pir21
pbBasic
pbAlterar
pbCancelar
pbDetalhar
pbExcluir
pbGravar
pbImprimir
pbIncluir
pbNext
pbOk
pbPrevious
pbProcurar
pbSair
Piramide
Piramide (com icone)
pbPadrao
pbPadraoAlterar
pbPadraoCancelar
pbPadraoCopia
pbPadraoDetalhar
pbPadraoEmitir
pbPadraoExcluir
pbPadraoGravar
pbPadraoImprimir
pbPadraoIncluir
pbPadraoLancar
pbPadraoOk
pbPadraoSair
pbCancelar
pbCliente
pbConfigurar
pbConfigurarNDO
pbCopia
pbDetalhar
pbEmitir
pbExcluir
pbFormula
pbFornecedor
pbGravar
pbImprimir
pbIncluir
pbOk
pbPagar
pbParar
pbProcurar
pbReceber
pbSair
pbTransfere
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Componentes visuais (2/3)
Componente
Column
Combo Box
Pir21
colCodeDesc
colDate
colHelpContext
colLong
colNumber
colPrimaryKey
colString
colValorAtributo
cmbBasic
cmbClasseMaterial
cmbCodeDesc
cmbDeposito
cmbDescEmpresa
cmbDescFilial
cmbDescription
cmbSubclasseMaterial
cmbTipoMaterial
cmbUF
Piramide
colChavePadraoNew
colCodeDescNew
colPadraoNew
cmbPadraoNew
cmbClasseMaterial
cmbCodeDescNew
cmbDescEmpresaNew
cmbDescFilialNew
cmbDescriptionNew
cmbSubclasseMaterial
cmbTipoMaterial
cmbPadraoUFNew
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Componentes visuais (3/3)
Componente
Pir21
Piramide
CheckBox
cbBasic
cbPadraoNew
RadioButton
rbBasic
rbPadrao
DataField
MultilineText
dfDate
dfLong
dfNumber
dfString
mlDescription
mlLong
mlString
dfPadraoNew
dfDate2000New
mlDescription
mlPadraoNew
BackgroundText
bckBasic
bckPadrao
GroupBox
gbBasic
gbPadrao
Table
tblBasic
tblPadraoNew
List Box
lbBasic
lbCodeDesc
lbPadrao
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  SQL
 Recomendações
 O nome de campos e tabelas devem estar sempre
em caixa alta. As palavras reservadas do SQL devem
ser escritas com letra inicial maiúscula.
 Utilizar
os binds (:NomeVariável) nas cláusulas
Where que utilizam variáveis como critério.
Exemplo:
Select CLIENTE From CLIENTES Where CLIENTE = :sCodCliente
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Existem algumas operações básicas que devem ser
feitas sempre que um formulário é aberto e fechado:
Piramide
• As operações básicas deverão ser inseridas nas funções fInitializeWindow() e
fCloseWindow(). Essas funções serão chamadas respectivamente pelas
mensagens SAM_Create e SAM_Close.
Pir21
• As operações básicas já são implementadas diretamente no SAM_Create e
SAM_Close da classe frmBasic (classe a partir da qual são criadas todas as
telas deste padrão). As funções InitializeWindow() e CloseWindow() também
são chamadas nas mensagens citadas, sendo definidas em métodos virtuais
_InitializeWindow() e _CloseWindow(), sendo possível a redefinição destes
métodos nas instâncias para algum fim específico.
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Formulários de manutenção simples
Os formulários "frmMnt" (padrão Pirâmide) e
"frmBasicMnt" (padrão Pir21) devem ser utilizados para
cadastros simples, que não envolvam mais de quatro
atributos.
 Para utilizá-los, basta criar as colunas de acordo com a
funcionalidade e redefinir os métodos virtuais de
seleção, inserção, update e deleção dos dados da tabela.

©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Formulário de manutenção simples (padrão Pirâmide)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Formulário de manutenção simples (padrão Pir21)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Browser e formulários de manutenção



Trata-se de uma tela de navegação a partir da qual podem ser
realizadas operações referentes a cadastros ou
movimentações);
Se o cadastro possuir mais de quatro atributos e não for
complexo, oferecendo poucas funcionalidades alem da
manutenção (inclusão, alteração, exclusão e detalhamento),
uma tela de browser deve ser criada;
Outras operações como cancelamentos, impressão,
autorizações, entre outras, poderão ser chamadas a partir de
botões do browser. (Caso o browser esteja com excesso de
objetos visuais ou a operação necessite de filtros específicos,
pode-se criar uma tela específica para a operação a ser
realizada).
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Browser e formulário de manutenção (padrão Pirâmide)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Formulários (Forms)
 Browser e formulário de manutenção (padrão Pir21)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Classes de sistema

Existe uma classe genérica previamente instanciada que pode ser
utilizada em qualquer trecho do código. Essa classe genérica agrupa
diversas funcionalidades.
Nome da classe
Nome da instância
Piramide
Pir21
tobPiramide
PGlobal
tobPir
Global
 Convenções  Empresa

Existem funções pré-definidas que devem ser utilizadas para recuperar a
empresa selecionada no MDIPrincipal.
Dado
Piramide
Pir21
Código
tobPir.tGetS(“EMPRESA”)
Global.GetEmpresa()
Nome
tobPir.tGetS(“EMPRESA_NOME”)
Global.GetEmpresaNome()
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Funções de conexão

Principais operações a serem executadas na base dados e as
respectivas funções que devem ser usadas:
Funcionalidade
Piramide
Pir21
Abertura de conexão
Set hSql = oConexao.fGH()
Global.db.GetHandle(w_hSql)
Fechamento de conexão oConexao.fFH(hSql)
Global.db.FreeHandle(w_hSql)
Abertura de transação
tobPir.tBeginTransaction()
Global.db.BeginTransaction()
Commit de transação
tobPir.tEndTransaction()
Global.db.EndTransaction()
Rollback de transação
tobPir.tCancelTransaction()
Global.db.CancelTransaction()
SQL Handle comum
hSqlComum
Global.db.GetBasicHandle()
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Padrões de codificação
 Convenções  Recuperação de parâmetros


Padrão Piramide
Tipo do Parâmetro
Modo de Recuperação
Global
Empresa
Filial
fBuscaParam (“NOME_PARAM”, sValorParam)
fEmpresaParam (“NOME_PARAM”, sValorParam)
fEmpresaParamP (sEmpresa, “NOME_PARAM”, sValorParam)
Padrão Pir21
Os parâmetros globais devem ser recuperados através da PGlobal:
Global.param.GetParam(“NOME_PARAMETRO”)
Para recuperar os parâmetros por empresa, deve-se utilizar um objeto da classe CParametroEmpresa. Uma vez
o objeto declarado, deve-se fazer uma carga dos parâmetros, utilizando o serviço LoadParam do objeto.
Sintaxe: oParam.LoadParam(sEmpresa, “NOMEPARAM1, NOMEPARAM2, ...”, sOrigem)
onde
“NOMEPARAM1, NOMEPARAM2, ...”  Lista dos parâmetros que se deseja carregar o valor. Se nulo, carrega
todos.
sOrigem  Origem à qual pertence o parâmetro. Também é opcional.
Feita a carga dos parâmetros, para recuperar seu valor deve-se utilizar o método GetParam() do objeto:
Set sValorParametro = oParam.GetParam(“NOME_PARAMETRO”)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamentos
de erros
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros





O tratamento de erros deve ser feito através do empilhamento da mensagem de
erro no momento em que o mesmo acontece e sua posterior exibição na
interface.
A exibição de mensagens de erro (ou outros tipos de mensagens) nunca deverá ser
feita dentro de um objeto de negócio ou dentro de uma transação.
As mensagens de erro ficam armazenadas no banco de dados, na tabela
PIR_ERROS. No padrão Pir21, a utilização da tabela PIR_ERROS é obrigatória, não
sendo permitido a transcrição de mensagens de erro diretamente no código fonte.
Para empilhar o erro devem ser utilizadas constantes de erros que indicam o
código do mesmo no banco de dados. As mensagens podem receber parâmetros
que facilitem o entendimento ou identificação da causa do erro. Isso deve ser
feito utilizando o símbolo % precedido de um índice para o parâmetro, conforme
exemplo:
“Não foi possível gravar o pedido ‘%1’ da filial ‘%2’.”
Os parâmetros das mensagens serão passados para funções de empilhamento de
erro. Devem formar uma única String, sendo os parâmetros separados por um #.
No exemplo acima, caso o erro tenha acontecido para o pedido ‘000123’ da
filial ‘001’, a string de parâmetros deverá ser ‘000123#001’.
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros

Padrão Pirâmide
O empilhamento e exibição dos erros são feitos através do objeto tobPir. As funções
deverão sempre retornar TRUE ou FALSE, de forma que a interface identifique a
existência ou não de erros e decida se irá exibir ou não a mensagem.
If Not fGravarPedido()
Return FALSE

If Not fGravarPedido()
Mostra mensagem de erro.
Padrão Pir21
O empilhamento e exibição dos erros são feitos através do objeto Global. As funções
deverão sempre retornar constantes de erro, ou a constante PFC_Ok, que indica
que a função foi executada com sucesso. O retorno de uma função sempre deve ser
testado utilizando-se a função PFFailed(nReturn) ou PFSucced(nReturn),
onde nReturn é a constante de erro retornada pela função.
Set nReturn = GravarPedido()
If PFFailed(nReturn)
Return nReturn
Set nReturn = GravarPedido()
If PFFailed(nReturn)
Mostra mensagem de erro.
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Método tError do tobPiramide
Pode ser utilizada tanto para empilhar
quanto para exibir erros, mas não suporta
as mensagens de erro gravadas em
PIR_ERROS.
Quando o erro detectado for erro de banco, o
parâmetro pnError deve receber a constante
Err_SQL e o handle SQL deve ser enviado para
o parâmetro phSqlErro.
Ex.: Call tobPir.tError( 0, Err_SQL, '',hSqlComum)
Quando o erro detectado for erro de negócio, o parâmetro pnError deve receber a constante de
erro correspondente. Estas constantes deverão estar declaradas em Constant.apl. O handle SQL a
ser enviado para o parâmetro phSqlErro deve ser hWndNULL.
Ex.: Call tobPir.tError(0, Err_ClienteInvalido, '', hWndNULL)
Para exibir erros empilhados: Call tobPir.tError(1,1, 'Erro ao gravar', hWndNULL)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Método tErrorApp do tobPiramide

Pode ser utilizada tanto para empilhar quanto para exibir erros, e
suporta as mensagens de erro gravadas em PIR_ERROS.
Exemplo: Call tobPir.tErrorApp(0, Err_PedidoVenda,'Erro
inserindo pedido', ‘000123#001’, ‘fInserPedido’, hWndNULL)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Método __PushPckErro do tobPiramide

Deve ser utilizado para empilhar mensagens de erro retornadas por
processamento em packages. A exibição da mensagem é feita através
da tobPir.tErrorApp. O parâmeto “p_nCode” é o código de erro
retornado pela package e o prâmetro “p_sPackage” é o nome da
package que retornou o erro.
Exemplo:
tobPir.__PushPckError(nReturn ,PCK_PIR_TITULO_RECEBER’)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Método Global.PushDBError

Utilizado para empilhar erros de banco de dados, normalmente após
uma instrução SqlPrepareAndExecute().
Exemplo:
Call Global.PushDBError( Global.db.GetBasicHandle())
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Método Global.PushAppError

Utilizada para empilhar erros, suporta as mensagens de erro gravadas
em PIR_ERROS.
Exemplo: Call Global.PushAppError( BOE_VEN_PedidoVenda,
‘000123#001’, ‘GravaPedido()’, hWndNULL)
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Método Global.PushPckError

Deve ser utilizado para empilhar mensagens de erro retornadas por
processamento em packages.
Exemplo: Call Global.PushPckError(nReturn ,
'PCK_PIR_FATURAMENTO', Global.db.GetBasicHandle())
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
Tratamento de erros
 Formas de empilhamento e exibição das mensagens de erro

Métodos Global.err.Show() e Global.ShowValidacao()

Estes métodos devem ser utilizados para exibição de mensagens de
erro no padrão Pir21. O Global.ShowVailidacao() deve ser
utilizado no SAM_Validate de objetos, pois já exibe a tela
padrão para tratamento de erros
de validação.
©PROCENGE 2005, todos os direitos reservados
Padrões e convenções de codificação em Centura
©PROCENGE 2005, todos os direitos reservados
Download

Procenge - Padrões e convenções de codificação em Centura