Professional Documents
Culture Documents
Home
C ategories
Statistics
New Pages
Recent Pages
To be defined pages
User's Groups
Recents:
Artic le
Page
Publish Export Permalink Printable Version
Share
0 Tw eet Share 0
Categories
none
Group
none
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
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
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.
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.
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:
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);
wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P
3/6
08/09/12
/* 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.
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
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.
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
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
wiki.gxtechnical.com/commwiki/servlet/hwiki?Boas+prticas+de+programao+em+Genexus++-+P
6/6