Você está na página 1de 4

Como organizar os arquivos e o cdigo fonte de um site ou sistema web (parte 1 de 3)

Talvez a maior dificuldade aps aprender uma linguagem de programao como estruturar os sistemas. Aprenda aqui uma metodologia de estruturao de sites e sistemas web (arquivos, cdigo fonte, nomenclatura, etc. . Antes de tudo, esse artigo no baseado em nen!um autor, nem uma metodologia With A Complex English Name. "or min!a e#peri$ncia em ficar fuando tudo quanto sistema open%source, e em passar madrugadas a fio resolvendo problemas nos meus sistemas, principalmente aqueles em que eu via a mesma declarao em &'' partes diferentes, eu acabei desenvolvendo um mtodo prprio de organizao e estruturao dos arquivos e do cdigo fonte. Talvez se(a um tema () bvio e que voc$s este(am cansados de ouvir. *as sempre tem algo novo a aprender. A!, vale lembrar que o que mostro v)lido tanto para sistemas quanto para sites (eu usarei a palavra sistema no decorrer do artigo, mas pense como+ sistema = site, site = sistema . ,o basta aprender uma linguagem de programao e se tornar o mais especialista do mundo nela caso no se ten!a noo de organizao e estruturao do sistema. -ue adianta saber escrever uma super-classe-fantstica, mas no final das contas voc$ est) perdido porque seu cdigo est) uma zona, voc$ no sabe aonde incluir isso, aonde declarar aquilo e assim por diante. .e eu for e#plicar tudo em um s artigo, vai ficar longo e cansativo, ento est) dividido da seguinte maneira+ Parte 1 /. 0rdem e localizao dos arquivos1 2. ,omenclatura dos arquivos1 3. ,omenclatura no cdigo1 4. 5stilo de codificao1 Parte 2 &. .eparao da lgica do visual1 6. 0rdem e local de incluso de arquivos1 7. 0rdem e local de criao de ob(etos1 8. 0nde conectar com o banco de dados1 9. .eparao de se:es (mdulos 1 Parte 3 /'. ;omo estruturar uma )rea administrativa (painel de controle 1 //. <ormul)rios+ em que ordem e qual a lgica de obter dados, validar, retornar erro e depois salvar= /2. 5stabilidade1 1) Ordem e localizao dos arquivos >m dos itens mais importantes onde colocar todos os arquivos. "ois afinal de contas, o sistema basicamente um aglomerado de arquivos? 5strutura das pastas+ nome_do_projeto/ @%%% docA @%%% laBoutA @%%% sqlA @%%% www/ @%%% cac!eA @%%% galeriaA @%%% libA @%%% modulosA @%%% templatesA + A pasta raiz de o nome identificador do seu pro(eto. 5u sempre uso nome da empresa cliente, e#emplo+ petrobras/. + doc a pasta que contm todos os documentos relacionados ao pro(eto+ contrato, anota:es de idias, propostas, leiame com as configura:es para que o sistema funcione corretamente, etc. + la out a pasta que contm o laBout CcruD, pronto para ser desmontado em !tml e (ogado na programao. ;ontm tambm os arquivos de edio originais, e#emplo arquivos de p!otos!op.

+ sql contm os .sql com a estrutura do banco de dados e tambm dumps de bacEup. + www onde fica o principal+ cdigos, laBout montado, bibliotecas, galeria, etc+ + wwwAgaleria F fotos dos itens do sistema. 5#emplo+ numa lo(a virtual, !) as fotos dos produtos, ento dentro da galeria tem mais uma pasta c!amada produtos que por sua vez contm as fotos dos produtos. + wwwAlib F todas as classes de frameworE e funcionalidades em geral ficam aqui armazenadas. + wwwAmodulos F classes das se:es do sistema (mdulos . + wwwAtemplates F toda a parte esttica fica armazenada aqui. ,ormalmente contm as pastas+ css, imagens, flas! e (s. .o auto%e#plicativas. 2) !omenclatura dos arquivos + "oda classe deve estar presente num arquivo que conten!a apenas ela, sem qualquer outro tipo de cdigo. 0 nome do arquivo deve ser+ class.nomedaclasse.p!p e deve estar contida na pasta wwwAlib. + Todo arquivo de incluso deve possuir o nome+ finalidade.inc.p!p. + #rquivos de $"%&+ nome.tpl e contidos em wwwAtemplates. + ;omo um m'dulo uma classe, seu arquivo tambm deve se c!amar class.nomedomodulo.p!p e estar em wwwAmodulos. 3) !omenclatura no c'di(o + Gari)veis, Argumentos, <un:es e ;lasses+ usar a notao "ascal, onde todas as palavras iniciam com letra maiHscula, e#emplos+ $ProdutoNome = 'Livro'; Class CarrinhoCompras function ObtemPedido($PedidoId) + Ao nomear uma funo A mtodo, procure sempre colocar a ao por primeiro e depois o porqu$ da ao, e#emplo+ class ! suarios function Obtem"mail($ suarioId) ### + ;onstantes todas em maiHsculas+ define('$%& ' ()IO''* 'blah');

)) *stilo de +odi,icao Talvez a seo 3 acima se encai#asse aqui, mas preferi separar, fica mais claro. + *-P#.O-/ .empre coloque espao entre cada token (cada item de cdigo, e#emplo+ I, (, Jvari)vel, etc e sempre coloque parenteses onde for possKvel. !0O/ $'oma=+,-.+,/; -1%/ $'oma = + , (- . +) , /; + 2&O+O- 3* +4315O/ .empre abra e fec!e colc!etes nos blocos de cdigo, mesmo que se(am de apenas um comando. 5 cada colc!ete deve ficar individualmente em uma lin!a. !0O/ if(true) echo 'O0'; else echo 'N1o'; for($i=23;$i 4 233;$i,,) ! printf('5d4br67'* $i); 8a9er(l:o(); ; -1%/ if(true) ! echo 'O0';

; else ! ; echo 'N1o';

for($i = 23; $i 4 233; $i,,) ! printf('5d4br67'* $i); 8a9er(l:o(); ; + -"61!5-/ >sar aspas simples para strings. ,o colocar vari)veis dentro de string, deve%se abrir e fec!ar concatenao+ !0O/ $"ndereco = <)ua= $Cliente)ua* $ClienteNumero<; $Nomes><cliente$al<? = <@illian<; -1%/ $"ndereco = ')ua= ' # $Cliente)ua # '* ' # $ClienteNumero; $Nomes>'cliente$al'? = '@illian'; 0u, usar sprintf 6 printf, que muito mais profissional e claro de se ler (ve(a mais em !ttp+AAbr2.p!p.netAmanualAptLMNAfunction.sprintf.p!p + $"ndereco = sprintf(')ua= 5s* 5s'* $Cliente)ua* $ClienteNumero); + +O%*!"761O-/ ;omentar toda classe, funo, atributo, constante e vari)vel principal usando o estilo OavaPoc A "!pPocumentor. 5 sempre cada novo bloco de cdigo principal. 0 que "!pPocumentor= Mom, eu no vou e#plicar aqui como funciona, porque seno teria que dividir esse artigo em /''' partes. .egue manual completo+ !ttp+AAwww.p!pdoc.orgA. Qrei e#plicar aqui o b)sico do "!pPoc, praticamente o necess)rio para comentar seu cdigo adequadamente+ .eus blocos de cdigos devem ser dessa maneira+ 6.. . AescriB1o principal do Cue estD comentando# . . @param inte:er $Id Identificador da (B1o na %OE"'P( . @param strin: $ suario CFdi:o do usuDrio . @since //63/63G . @author (lfred )# %audisch4emailHemail#com7 . @return arraI .6 function Obtem(coes($Id* $ suario) % ;oloque sempre um bloco desse tipo em cima de suas fun:es. "ara todos os parametros da funo, coloque um @param. % @return o que a funo retorna (e#emplo+ arraB . ,o caso de no retornar nada, coloque @return oi!. % "ara classes, retire o @param e @return e escreva a descrio da mesma+ 6.. . Janipuladora de carrinho de compras# . . CaracterKsticas= . L (diciona produto; . L Calcula frete; . etc### . . @since //63/63G . @author (lfred )# %audisch4emailHemail#com7 .6 class Carrinho ### % "ara atributos de classe, use+

6.. . Nome do cliente . @var tipo $Nome .6 var $Nome;

% "ara constantes, use o mesmo tipo de bloco, mas ela no possui nen!uma tag R. % "ara comentar blocos de cdigo importantes, tal como um w!ile que obtm os usu)rios, use a seguinte formatao+ 66 LLLLLLLLLLLLLLLLLLLLLLLLLLLL 66 ObtMm usuDrios 66 LLLLLLLLLLLLLLLLLLLLLLLLLLLL Nhile($Aados = $A%L78etchNum()) ! 66 ObtMm Id $Id = $thisL7ObtemId($Aados>'cod'?); ###

0u se(a, em blocos que e#ecutam uma srie de a:es, mas que se resumem a uma finalidade abrangente (e#emplo+ apagar produtos , coloque duas lin!as de traos e a descrio no meio dos traos no comeo do bloco. "ara blocos de a:es mais comuns, (a:es dentro desse bloco importante, na ao apagar produtos, para um produto envolve a ao obter o produto, apagar a foto e apagar o registro do banco de dados , use o coment)rio ;II ( AA em uma lin!a mesmo. Ainda e#istem dezenas de outras tags R. Tal como RlinE, Rsee, Rversion, Raccess, etc mas isso voc$ aprende no !ttp+AAwww.p!pdoc.orgA porque a min!a inteno aqui l!e mostrar padr:es a seguir e no a dominar o "!pP0;?

5 aqui encerra essa primeira parte? "ara saber o que vem na pr#ima, verifique o indKce no topo desse artigo. 5u vou tentar concluir ela para daqui / semana, fiquem antenados?