Você está na página 1de 6

08/09/12

Boas prticas de programao em Genexus - Portugus


Search Go

Home

C ategories

Statistics

New Pages

Recent Pages

To be defined pages

User's Groups

User: anonymous Log in Register

Recents:

Boas prticas de progra

Artic le

Talk Properties History Backlinks Forward links Views

Boas prticas de programao em Genexus - Portugus


Verso Original em Espanhol As boas prticas de programao em Genexus servem para melhorar a compreenso e clareza do cdigo, alm de permitir unificar critrios entre vrios programadores das empresas. As boas prticas de programao em Genexus inicia-se baseando que o cdigo a melhor documentao que um sistema deva ter, por isto tambm a melhor ferramenta que um programador tem para compartilhar seu trabalho aos demais programadores. Ao Utilizar boas prticas de programao em Genexus o cdigo da Kb obtm um valor agregado j que possui: Fcil integrao e reutilizao; Fcil compreenso por parte do programador; Unificao de critrios; Eliminao de zonas obscuras(ocultas) no cdigo; Fcil comunicao entre os programadores; Clareza e cdigo escrito corretamente; Diminuio significativa na manuteno do Software; As boas prticas de programao em Genexus esto compostas por regras e recomendaes: Regras 01) Ao nomear atributos deve-se utilizar a nomenclatura GIK(GeneXus Incremental Knowledge Base) ;

Page
Publish Export Permalink Printable Version

Share

0 Tw eet Share 0

Categories
none

Group
none

02) Os atributos devero ter descrio e Help(ajuda);

N o m e :C l i C o d D e s c r i o :C d i g od oC l i e n t e H e l p :I d e n t i f i c a d o rd oC l i e n t en os i s t e m a .

03) As tabelas devem ter nomes que representem a realidade e no um nome herdado pela transao que a cria.

T r a n s a o : C l i 2 S i s P r o T a b e l a :C l i e n t e s

04) As variveis que faam referencia a um atributo devem ser baseadas no mesmo(basead on atribute) e ter o mesmo nome do atributo, se a lgica assim permitir.

A t r i b u t o :C l i C o d -C ( 2 0 ) V a r i a b l e :& C l i C o d -C ( 2 0 )

-C d i g od oC l i e n t e -C d i g od oC l i e n t e

05) Relatrio de Especificao Considera-se um boa prtica que o Analista / Programador Genexus revisem com ateno o relatrio de especificao j que este a principal ferramenta que permite identificar erros no cdigo.

Definio de Regras Em ocasies que no se define um padro para escrever as regras, fica um cdigo muito "complexo" , difcil de entender o comportamento desejado para um atributo em particular. E x e m p l o ( E R R A D O ,S e mp a d r o ) : P a r m ( i n : E m p C o d ,i n : & U s u a r i o ,i n : & C l i C o d ,i n : & M o d e ) ;

wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P

1/6

08/09/12

Boas prticas de programao em Genexus - Portugus

n o a c c e p t ( C i u C o d ) ; & C l i S a l d o A u x=u d p ( P c a l c S a l d o ,E m p C o d ,& C l i C o d ,C l i S a l d o ) ; e r r o r ( ' M e n s a j e ' )I fN u l l ( & U s u a r i o ) ; a l l o w n u l l s ( E m p C o d ,L o c C o d); C a l l ( P A c t I n f o ,E m p C o d ,C l i C o d )i f< c o n d > ; e r r o r ( ' M e n s a j e ' )I FC l i D i r=n u l l v a l u e ( C l i D i r)a n da f t e r ( C l i D i r ); p r o m p t ( W c l i e n t e s ,E m p C o d ,C l i C o d ) ; d e f a u l t ( C l i F c h C r e a ,N o w ( )); n o a c c e p t ( E m p C o d ) ; C a l l ( P I n f o U s r ,E m p C o d , & U s u a r i o )i f< c o n d > ; n o c h e c k ( E m p C o d ,L o c C o d ) ; m s g ( ' S a l d om e n o rq u ec e r o ' )i fC l i S a l d o<0 ; R e f c a l l ( W c l i e n t e s ,E m p C o d ,C l i C o d ) ; C a l l ( P p r o c e d u r e ,E m p C o d ,C l i C o d )i f< c o n d > ; d e f a u l t ( C l i A r e a ,' A '); 06) Ao observarmos o cdigo acima , nos damos conta que para buscar algo temos que recorrer at o final das regras, j que nos mostra nenhum critrio a seguir. Existem muitas maneiras de definir as regras para que sejam fceis de entender, pois vamos estabelecer um critrio como boas prticas de programao. Sugesto / Exemplo Correto: p a r m (p a r m 1 ,p a r m 2 ,. . . ) ; / /I N S T A N C I A RR E G I S T R O S( P A R M E T R O ) / /D E F A U L T s d e f a u l t ( C l i F c h C r e a ,N o w ( )); / /N O A C C E P T s n o a c c e p t ( E m p C o d ) ; / /A T R I B U I E S C l i E d a d=A g e ( C l i F c h N a c ) ; / /I N T E G R I D A D ER E F E R E N C I A L a l l o w n u l l s ( E m p C o d ,L o c C o d); n o c h e c k ( E m p C o d ,L o c C o d ) ; / /V A L I D A OD EC A M P O S e r r o r ( " N o m b r ed ec l i e n t ei n c o r r e c t o . " )i fn u l l ( C l i N o m ) ; / /V A L I D A OD ER E G I S T R O S e r r o r ( " L af e c h ad ev e n c i m i e n t on op u e d es e rm e n o ral ad e ld o c u m e n t o . " )i fD o c F c h V e n c<D o c F c h ; / /P R O M P T s p r o m p t ( W C l i e n t e s ,C l i C o d ) ; / /C A L L/A E S C a l l ( P I n f o U s r ,E m p C o d , & U s u a r i o )i f< c o n d > ;

Recomendaes 07) A descrio dos objetos da KB devem ser claramente explicativos independentes do nome do mesmo;

N o m e :M o d C l i F i n a n c e i r o D e s c r i p c i n :M o d i f i c a c od o sC l i e n t e sd oF i n a n c e i r o

08) Utilizar nomes mnemnicos para as variveis que no correspondam a nenhum atributo do sistema.

S ea t r i b u i rau m av a r i v e lae x i s t n c i ad eu mc l i e n t e F o r m ac o r r e t a :E x i s t e C l i e n t e F o r m aI n c o r r e t a :F l a g

wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P

2/6

08/09/12

Boas prticas de programao em Genexus - Portugus

09) Utilizar nomes mnennicos para os objetos da KB

T r a b a l h a r C o m C l i e n t e s

10) No cabealho dos programas(Procs) de deve ter um quadro de comentrios com uma pequena descrio do propsito do mesmo e dado teis.

/ * A u t o r . . . . . . . . . . :C r i s t h i nG m e z( u r u l i n u x @ a d i n e t . c o m . u y ) D a t ad ec r i a o :2 6 0 6 2 0 0 4 P a r m e t r o si n . . : P a r m e t r o so u t . : A l t e r a d oe m. . . :2 7 0 6 2 0 0 4 C o m e n t r i o s . . . . :T r o c aoS t a t u sd o sc l i e n t e sl o g oa p sac o n f i r m a oel i b e r a op e l oF i n a n c e i r o . * /

11) Colocar uma linha em branco entre as definies dos eventos e as subrotinas para separar os memos e deixar mais compreensvel os programas.

12) Dentro dos eventos se deve comear a escrver os cdigos aps ter feito a identao(tabulao) corretamente, isto facilita a visualizao do cdigo.

/ /F o r m ai n c o r r e t a : E v e n t' N u e v o C l i ' I f& C l i C o d=& C l i e n t e / / C o d i g o E n d i f E n d E v e n t / /F o r m aC o r r e t a : E v e n t' N u e v o C l i ' I f& C l i C o d=& C l i e n t e / / C o d i g o E n d i f E n d E v e n t

13) Para que os ForEach fiquem mais claros e fceis de identificar dentro dos eventos ou no cdigo em geral, recomenda-se que escrevam da seguinte maneira:

/ /F o r m aI n c o r r e t a ( s e mi d e n t a o ) : E v e n t' N u e v o C l i ' F o rE a c h w h e r eC l i C o d=& C l i C o d / / C d i g o E n d F o r E n d E v e n t / /F o r m ac o r r e t a ( c o mi d e n t a o ) : E v e n t' N u e v o C l i ' F o rE a c h w h e r eC l i C o d=& C l i C o d / / C d i g o E n d F o r E n d E v e n t

14) No utilizar filtros em vrios locais(Parmetro, source e condio) ao mesmo tempo dentro de uma procedure, utilize apenas em um local "Clusula Where" de um For each.

15) Para que os filtros dos ForEach fiquem mais claros, recomenda-se ter um where para cada condio e no utilizar (AND);

/ / F o r m ai n c o r r e t a : F o rE a c h w h e r eC l i C o d=& C l i C o da n dC l i S t a t u s=& C l i S t a t u sa n dC l i T i p o=& C l i T i p o

wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P

3/6

08/09/12

Boas prticas de programao em Genexus - Portugus


/ / C d i g o E n d F o r / /F o r m ac o r r e t a ( U mW h e r ep a r ac a d ac o n d i o ) : F o rE a c h w h e r eC l i C o d=& C l i C o d w h e r eC l i S t a t u s=& C l i S t a t u s w h e r eC l i T i p o=& C l i T i p o / / C d i g o E n d F o r

/* Comentario de Demetrio Toledo. Geralmente acostumo identificar sempre a tabela base de onde vou trabalhar com o For Each utilizando a sentena Defined By, no seguinte formato. F O RE A C HC l i c o d ,C l i S t a t u s / /G X :C L I E N T E S W h e r eC l i C o d =& C l i C o d W h e r eC l i S t a t u s=& C l i S t a t u s W h e r eC l i T i p o =& C l i T i p o D e f i n e dB yC l i E s t R e g / / C o d i g o E N D F O R /* Comentario de Adilson Costa. Aproveitando o comentrio anterior onde identificada a tabela base, alm de informar o nome da tabela, identifico tambm a sua descrio. Utilizo tambm a mesma informao no fechamento do For Each para facilitar quando estamos utilizando For Each aninhados. F o rE a c hO r d e rC l i c o d ,C l i S t a t u s W h e r eC l i C o d =& C l i C o d W h e r eC l i S t a t u s=& C l i S t a t u s W h e r eC l i T i p o =& C l i T i p o / / C o d i g o E n d F o r/ /C l i e n t e s>T a b e l ad eC l i e n t e s / /C l i e n t e s>T a b e l ad eC l i e n t e s

16) Colocar espao depois de cada (,) nas regras, call , udp, etc. para que todos os programas fiquem mais fceis de entender.

/ /F o r m ai n c o r r e t a : p a r m ( & C l i C o d , & U s u C o d , & T i p o ) ; c a l l ( M i O b j e t o , C l i C o d , U s u C o d , & T i p o ) / /F o r m ac o r r e t a : p a r m ( & C l i C o d ,& U s u C o d ,& T i p o ) ; c a l l ( M i O b j e t o ,C l i C o d ,U s u C o d ,& T i p o )

17) Evite abreviar excesivamente Os nomes das variveis, subrotinas, objetos, etc, devem ser o mais claro possveis j que se algum externo trabalhar com o cdigo, alm de entender o cdigo em geral, dever estar descifrando os nomes de cada variveis, etc. Exemplo: Se quiser atribuir a uma varivel o cliente por fornecedor / / F o r m aI n c o r r e t a : & C P F o r n / / F o r m ac o r r e t a : & C l i e n t e P o r F o r n e c e d o r

18) Clareza no cdigo A clareza no cdigo tambm se considera uma boa prtica de programao, em muitos casos por costume dos programadores abusam do uso do "if" esquecendo que existe o comando "Do Case". Em muitos casos isto se deve as primeiras verses do Genexus que no suportavam este comando e de costume no trocaram / modificaram a escrita do cdigo. 19) Os atributos devem estar baseados em Domnios(Domains) Deve-se definir todos os atributos sempre que possvel , sejam baseados em algum Domnio, sendo fcil adaptarse a alteraes de tipos ou larguras.

wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P

4/6

08/09/12

Boas prticas de programao em Genexus - Portugus

20) Utilizao de Patterns, quando possvel. Recomenda-se que toda aplicao web utilize Patterns, os Patterns(padres) nos oferecem uma ferramenta ideal para criar aplicaes web. Facilitam a migrao do ambiente wina web e nos oferecem uma forma prtica de solucionar problemas que antes demorvamos muito tempo. 21) Evitar constantes no cdigo Usar os Enumeradores ao invs de constantes no cdigo. Desta maneira se trocar a constante no necessrio trocar em todos os objetos que ela utilizada.

& T y p e=" C R "/ /E r r a d o & T y p e=B a l a n c e T y p e . C r e d i t/ /C o r r e t o

22) Manuteno das Kb's A natureza da maioria dos projetos nos leva a crer que estamos fazendo alteraes constantes no conhecimento inicial que temos armazenados em nossas Kbs. As solicitaes de alterao dos clientes disparam um monte de aes que em diversas ocasies modificam grande parte da nossa lgica inicial de negcios. Isto faz com que existam KB's que tenham muitos objetos, atributos e tabelas que no se utilizam ou que deixaram de se utilizar por alguma alterao ou reconstruo do cdigo. O que possibilitar que na KB exista objetos duplicados e desnecessrios e a medida que uma KB cresce , cresce tambm os tempos de produo. Existem tarefas que sem nos darmos conta poderemos otimizar nossas kb, realizando a manuteno do conhecimento existente em uma kb. Fazendo uma boa manuteno podemos baixar os tempos de: Build All

Copy Model

Update Model

Generate Help

Publicacin de Informacin con GXPublic

Respaldos Seria bom em certas ocasies tomarmos um tempo livre para apagar todos os objetos, atributos, domnios, butipois e tabelas que no utilizarmos. Isto diminuir os tempos de produo e ajudar bastante que nossas KB's tenhm o conhecimento que necessita para responder as nossas necessidades. Uma das coisas que faz com que uma KB cresa ter modelos sem utilizar. Como recomendao seria bom eliminar todos os modelos que no se utilizem em uma KB.

23) Encapsular cdigo mediante o uso de atributos frmula Um aspecto muito relevante na hora de dar manuteno no software ter as definies dos vrios tipos de clculos que se realizam sobre os dados em um local centralizado. Para isto recomendamos ter incorporado estes clculos como atributos FRMULA. Neste formato nos asseguramos que quando se troca o clculo que se quer realizar para obter uma determinada informao, se troca o atributo frmula e isto vlido para todo o sistema. Por ltimo uma nomenclatura proposta para os casos em que a definio de um ATT(atributo) frmula est baseado em um procedimento. "Exemplo: CliSdoRes = udp(P...)" o nome do procedimento deve ser igual ao nome do atributo. No exemplo anterior ficaria "CliSdoRes = udp(PCliSdoRes...)", outra opo colocar antes do nome da proc(procedure) o sufixo "frm", no exemplo citado anteriormente ficaria "CliSdoRes = udp(PfrmCliSdoRes).

wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P

5/6

08/09/12

Boas prticas de programao em Genexus - Portugus

C reated: 05/09/08 03:54 PM by rcoproc Last update: 05/10/08 08:11 AM by rcoproc

Powered by GXwiki 4.0 Beta1 (generated with GeneXus X Evolution 2) gxwiki@gxtechnical.com

wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P

6/6