Você está na página 1de 21

Prof.MSc.

AndersonViosodeArajo

Introduo
Asconvenesdecdigosoumaboaprticade

programao; SoAjudam,porexemplo,namanutenodeum sistema; Aviolaodessasregrasprejudicaemmuitoo entendimentodeumcdigo; Comasconvenes,secapazdeproduzirumcdigo legvel,limpo,quedemonstraqualidadeedemaneira profissional;

Motivao
80%docustototaldeumapartedeumsoftwarede

manuteno; Dificilmenteumsoftwarevaisermantidopeloautor originalpelavidatoda; Deveseseguirumaconveno,poisoutrosprogramadores podemdarmanutenonoquevieraserconstrudo depois; Fcilentendimentoporumaequipededesenvolvimento; Profissionalismo; Umaaplicaopossuiumvidatil,equeremosqueessa vidasejalonga; Umsoftwareumprodutoquedevepossuirqualidade, codificaolimpa,fcilentendimento,fcilmanuteno.

Pacotes
Deveobedeceraumacertahierarquia,separadaporpontos; Deveseusarletrasminsculaseraramentesefazusosde

nmeros; Seopacoteaserutilizadodeforadacompanhiaou organizao,estedevecomearcomodomniodeinternet redigidodeformacontrria.


Porexemplo,opacotecom.sun.

Essaspartesdevemsercurtas,comatoitocaracteres; Asbibliotecaspadroepacotesopcionaisquecomeamcom

java ejavax,soexceesaestaregraenosopermitidosesses nomesparausododesenvolvedor; Sopermitidasabreviaes,comoporexemplo,opacoteutil ao invsdeutilities; Ousodeacrnimostambmvistocombonsolhos.

ExtensesdeArquivos
Emjava arquivoscomaextenso .java so

denominadosarquivosdecdigofonte; Jarquivoscomaextenso .class sodenominados arquivosdecdigodebytesouseja,osarquivoapsa compilao.


JavaSource JavaBytecode .java .class

Arquivos
Pedesequesejaevitadoarquivoscommaisde2000

(duasmil)linhasdecdigo; CadaarquivofonteJavacontmumanicaclasseou interfacepblica; Aclassesprivadaseasinterfacesassociadasaclasse pblicapodemsercolocadasemummesmoarquivo queumaclassepblica; Aclassepblicadeveseraprimeiraclasseouinterface noarquivo.

ComentriosIniciais
Devemserescritosnoinciodaclasse,antesda

declaraodopacote(package);
/* * Nome da Classe * * Verso * * Alteraes na classe * */

Importaesdecdigo
Evitarousode*noimport: Certo: import javax.servlet.http.HttpSession Errado:import javax.servlet.*

DeclaraodeClasseouInterface
Osnomesdevemconsistiremumaoumaispalavras,

deprefernciasubstantivosoufrasessubstantivas; Comaprimeiraletradecadapalavraemletra maiscula. Abreviaesdevemserevitadas; Exemplo:


public class NomeDaClasse {

DeclaraodeClasseouInterface (2)
ComentrioJavadoc daclasseouinterface:
/** * Nome da Classe e descrio * * @version * @author */

Declaraes
Declararumadeclaraoporlinha: Certo:

int a; int b;

Errado: int a, b;

Sepossvel,inicializaravarivelnomomentoda

suacriao;
Exemplo: int a = 0; int b = 0;

Declaraes(2)
Evitarmltiplasatribuiesnamesmalinha: Certo:

a = 10; b = 10; a = b + c; d = a + r;

Errado: a = b = 10;

d = (a = b + c) + r;

Declaraes(3)
Nomesdevariveis(ouatributos)comeamcom

minsculaseoinciodecadapalavraseguintecom maiscula:
Exemplo: public int nomeDaVariavel;

Constantes: Onomedevesertodoemletramaiscula; Exemplo:


final int DISTANCIA_MINIMA = 30; final String NOME_SISTEMA = BUSAO;

DeclaraodeMtodos
Nomesdosmtodostambmseguemapadronizao

similaradevariveis; Osmtodosnormalmenteutilizamverbosoufrases verbais; Mtodosqueretornemumtipobooleanodevemusar prefixo"is"seguidodeumsubstantivoouadjetivo; Exemplos:


public void nomeDoMetodo() { } public boolean isEmpregado(){ }

DeclaraodeMtodos(2)
Osmtodosqueretornamoresultadodeumafuno

ouumatributodoobjetosonomeadoscom substantivoscomoprefixo"get; Osmtodosparaatribuirovaloraumatributodo objetosonomeadoscomsubstantivoscomoprefixo set; EmrelaoaJavaBeans,ousodoget eset so obrigatrios;

DeclaraodeMtodos Comentrios
ComentrioJavadoc domtodo:
/** * Nome do mtodo e descrio * * @param nomeParam Descrio do Parmetro * @return Descrio do retorno */

LocalizaodasDeclaraes
Todasasdeclaraesdevemserrealizadasnoiniciodo

blocodoseuescopo;
Exemplo:
public void nomeMetodo() { int a; //Essas variveis sero usadas em todo o escopo do mtodo int b; if (condio) { int c; //Varivel utilizada apenas dentro do if. } }

LocalizaodasDeclaraes(2)
Deveseevitarcolocaromesmonomeemvariveisde

escoposdiferentes;
Exemplo:

int a; if (condio) { int a; }

RetornodeMtodos
Evitar:
if (booleanExpression) { return true; } else { return false; }

Preferir:
return booleanExpression;

ComentriosEspeciais
Usarcomentriosespeciaisparadefinirpontosde

atenodentrodocdigo; //FIXME:
Usarquandofoiidentificadoumerro,quedeveser

corrigidomaistarde;

//TODO: Usarquandoalgumatarefaaindaestpendentedeser executadanaquelepontodocdigo; //XXX: Correspondeaumapartedocdigoqueestmalfeita, precisaserrefeito,masestfuncionando;

CdigoFonteSun
Paraverificarautilizaodasconvenes,podemos

abrirocdigofontedoJavaescritoporprogramadores daSun;