Igara - Sintegra
quinta-feira, 29 de julho de 2010
Busca  
Porta 80 Web Hosting
 :: Acessibilidade
Ir para conteúdo principal: ALT + 1
 :: Participe
Seja um autor de CD/DVD de Treinamento
Publique um artigo
Publique uma oportunidade
Publique uma notícia
Publique um curso
Publique uma dica
Publique um código
 :: Informativo
Receba nossos informativos por e-mail.
E-mail:   
 
Digite a palavra abaixo:  
 
 
 :: Oportunidades
Cadastrar oportunidades
Gerenciar suas oportunidades
Cadastrar nova empresa
 :: Especiais
Básico de C++
C++ Builder
Curso ASP.NET 3.5 em VB.NET e C#
Guia Prático de HTML
Testes com Visual Studio Team System 2008
 :: Desenvolvimento
ActionScript
ADO.NET
ASP
ASP.NET
Automação Comercial
C#
C/C++
Coldfusion
CSS
Delphi
Disp. Móveis
HTML
Java
Javascript
LSL (Second Life)
Modelagem
PHP
Python
Sharepoint
Silverlight
SQL
VBA (Office)
Visual Basic
Visual Basic .NET
Visual Fox Pro
WCF/WPF
Web Services
XML
 :: Infra
BizTalk Server
CRM
Exchange Server
ForeFront / Antigen / IAG
Interoperabilidade
ISA Server
Linux
MOF
MS Dynamics CRM
Network
OCS / LCS
Outlook
Powershell e Scripts
Redes
Segurança
System Center e Gerenciamento
Virtualização
Windows
Windows Server
 :: Banco de Dados
Access
Caché
Firebird
Interbase
MySQL
Oracle
SQL Server
Sybase
 :: Gerência
Arquitetura
Ciclo de Vida de Desenvolvimento
Controle de Versão
Estimativas
Metodologias
MOF
Qualidade e Testes
 :: Design
Corel
Flash
Photopaint
Photoshop
 :: Livros
Análise Sistemas
Aplicativos
Banco de Dados
Certificação
Design e CAD
Gerência
Hardware
Internet
Programação
Programação Web
Rede
Segurança
Servidores
Sistemas Operacionais
 :: CDs/DVDs
Desenvolvimento
Infra
Design
 :: E-Books
.NET 2.0 (VS 2005)
.NET 1.1 (VS 2003)
SQL Server
Excel 2007
Excel 2003
Access 2003
ASP 3.0
Delphi
Java
Artigos
Como organizar os arquivos e o código fonte de um site ou sistema web (parte 1 de 3)
Por: Alfred Reinold Baudisch
[Entre em contato com o autor ]
Desenvolvedor web freelance, com atuação na área há 7 anos. Experiência avançada em PHP, SQL e modelagem de sistemas multi-camadas. Atualmente dedicado ao aprendizado em desenvolvimento mobile, especificamente mobile games, com J2ME. Apaixonado e conhecedor do mercado financeiro, gestão e estratégias de novos negócios, visão constantemente empreendedora. Editor dos blogs Jornada Imperial e O Desenvolvedor PHP.
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
Como organizar os arquivos e o código fonte de um site ou sistema web (parte 1 de 3)
Publicado em: 25/02/2006

Talvez a maior dificuldade após aprender uma linguagem de programação é como estruturar os sistemas. Aprenda aqui uma metodologia de estruturação de sites e sistemas web (arquivos, código fonte, nomenclatura, etc.).

 

 

Antes de tudo, esse artigo não é baseado em nenhum autor, nem uma metodologia With A Complex English Name. Por minha experiência em ficar fuçando tudo quanto é sistema open-source, e em passar madrugadas a fio resolvendo problemas nos meus sistemas, principalmente aqueles em que eu via a mesma declaração em 500 partes diferentes, eu acabei desenvolvendo um método próprio de organização e estruturação dos arquivos e do código fonte. Talvez seja um tema já óbvio e que vocês estejam cansados de ouvir. Mas sempre tem algo novo a aprender. Ah, 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).

 

Não basta aprender uma linguagem de programação e se tornar o mais especialista do mundo nela caso não se tenha noção de organização e estruturação do sistema. Que adianta saber escrever uma super-classe-fantástica, mas no final das contas você está perdido porque seu código está uma zona, você não sabe aonde incluir isso, aonde declarar aquilo e assim por diante.

 

Se eu for explicar tudo em um só artigo, vai ficar longo e cansativo, então está dividido da seguinte maneira:
Parte 1

  1. Ordem e localização dos arquivos;
  2. Nomenclatura dos arquivos;
  3. Nomenclatura no código;
  4. Estilo de codificação;

 

Parte 2

  1. Separação da lógica do visual;
  2. Ordem e local de inclusão de arquivos;
  3. Ordem e local de criação de objetos;
  4. Onde conectar com o banco de dados;
  5. Separação de seções (módulos);

 

Parte 3

  1. Como estruturar uma área administrativa (painel de controle);
  2. Formulários: em que ordem e qual a lógica de obter dados, validar, retornar erro e depois salvar?
  3. Estabilidade;

 

1) Ordem e localização dos arquivos
Um dos itens mais importantes é onde colocar todos os arquivos. Pois afinal de contas, o sistema é basicamente um aglomerado de arquivos!

Estrutura das pastas:
nome_do_projeto/
|--- doc/
|--- layout/
|--- sql/
|--- www/

      |--- cache/

      |--- galeria/

      |--- lib/

      |--- modulos/

      |--- templates/



+ A pasta raiz é de o nome identificador do seu projeto. Eu sempre uso nome da empresa cliente, exemplo: petrobras/.

+ doc é a pasta que contém todos os documentos relacionados ao projeto: contrato, anotações de idéias, propostas, leiame com as configurações para que o sistema funcione corretamente, etc.

+ layout é a pasta que contém o layout “cru”, pronto para ser desmontado em html e jogado na programação. Contém também os arquivos de edição originais, exemplo arquivos de photoshop.

+ sql contém os .sql com a estrutura do banco de dados e também dumps de backup.

+ www onde fica o principal: códigos, layout montado, bibliotecas, galeria, etc:
+ www/galeria – fotos dos itens do sistema. Exemplo: numa loja virtual, há as fotos dos produtos, então dentro da galeria tem mais uma pasta chamada produtos que por sua vez contém as fotos dos produtos.
+ www/lib – todas as classes de framework e funcionalidades em geral ficam aqui armazenadas.
+ www/modulos – classes das seções do sistema (módulos).

+ www/templates – toda a parte estética fica armazenada aqui. Normalmente contém as pastas:
css, imagens, flash e js. São auto-explicativas.

 

2) Nomenclatura dos arquivos

+ Toda classe deve estar presente num arquivo que contenha apenas ela, sem qualquer outro tipo de código. O nome do arquivo deve ser: class.nomedaclasse.php e deve estar contida na pasta www/lib.


+ Todo arquivo de inclusão deve possuir o nome: finalidade.inc.php.

 

+ Arquivos de HTML: nome.tpl e contidos em www/templates.

 

+ Como um módulo é uma classe, seu arquivo também deve se chamar class.nomedomodulo.php e estar em www/modulos.

 

3) Nomenclatura no código
+ Variáveis, Argumentos, Funções e Classes: usar a notação Pascal, onde todas as palavras iniciam com letra maiúscula, exemplos:

$ProdutoNome = 'Livro';
Class
CarrinhoCompras
function
ObtemPedido($PedidoId)

 

+ Ao nomear uma função / método, procure sempre colocar a ação por primeiro e depois o porquê da ação, exemplo:

class Usuarios
{
       function
ObtemEmail($UsuarioId) ...

+ Constantes todas em maiúsculas:
define('TB_USUARIOS', 'blah');

4) Estilo de Codificação
Talvez a seção 3 acima se encaixasse aqui, mas preferi separar, fica mais claro.

+ ESPAÇOS: Sempre coloque espaço entre cada token (cada item de código, exemplo: +, (, $variável, etc) e sempre coloque parenteses onde for possível.
NÃO:

$Soma=3+4*3+2;


SIM:

$Soma = 3 + (4 * 3) + 2;

 

+ BLOCOS DE CÓDIGO: Sempre abra e feche colchetes nos blocos de código, mesmo que sejam de apenas um comando. E cada colchete deve ficar individualmente em uma linha.

NÃO:
if(true) echo 'OK';
else echo
'Não';

for(
$i=10;$i < 100;$i++) {
   
printf('%d<br/>', $i);
   
FazerAlgo();
}


SIM:
if(true)
{
    echo
'OK';
}
else
{
    echo
'Não';
}

for(
$i = 10; $i < 100; $i++)
{
   
printf('%d<br/>', $i);
   
FazerAlgo();
}

 

+ STRINGS: Usar aspas simples para strings. Não colocar variáveis dentro de string, deve-se abrir e fechar concatenação:
NÃO:
$Endereco = "Rua: $ClienteRua, $ClienteNumero";
$Nomes["clienteTal"] = "Willian";


SIM:

$Endereco = 'Rua: ' . $ClienteRua . ', ' . $ClienteNumero;
$Nomes['clienteTal'] = 'Willian';

Ou, usar sprintf / printf, que é muito mais profissional e claro de se ler (veja mais em http://br2.php.net/manual/pt_BR/function.sprintf.php ):
$Endereco = sprintf('Rua: %s, %s', $ClienteRua, $ClienteNumero);

 

+ COMENTÁRIOS: Comentar toda classe, função, atributo, constante e variável principal usando o estilo JavaDoc / PhpDocumentor. E sempre cada novo bloco de código principal.


O que é PhpDocumentor? Bom, eu não vou explicar aqui como funciona, porque senão teria que dividir esse artigo em 1000 partes. Segue manual completo: http://www.phpdoc.org/.

Irei explicar aqui o básico do PhpDoc, praticamente o necessário para comentar seu código adequadamente:

 

Seus blocos de códigos devem ser dessa maneira:
/**
 * Descrição principal do que está comentando.
 *
 * @param integer $Id Identificador da Ação na BOVESPA

 * @param string $Usuario Código do usuário
 * @since 22/02/06
 * @author Alfred R. Baudisch<email@email.com>
 * @return array
 */

function ObtemAcoes($Id, $Usuario)

 

- Coloque sempre um bloco desse tipo em cima de suas funções. Para todos os parametros da função, coloque um @param.


- @return é o que a função retorna (exemplo: array). No caso de não retornar nada, coloque @return void.


- Para classes, retire o @param e @return e escreva a descrição da mesma:

/**
 * Manipuladora de carrinho de compras.
 *
 * Características:
 * - Adiciona produto;
 * - Calcula frete;
 * etc...
 *
 * @since 22/02/06
 * @author Alfred R. Baudisch<email@email.com>
 */
class Carrinho ...

- Para atributos de classe, use:
/**
 * Nome do cliente
 * @var tipo $Nome
 */

var $Nome;

- Para constantes, use o mesmo tipo de bloco, mas ela não possui nenhuma tag @.

 

- Para comentar blocos de código importantes, tal como um while que obtém os usuários, use a seguinte formatação:
// ----------------------------
// Obtém usuários
// ----------------------------
while($Dados = $DB->FetchNum())
{
   
// Obtém Id
   
$Id = $this->ObtemId($Dados['cod']);
...


Ou seja, em blocos que executam uma série de ações, mas que se resumem a uma finalidade abrangente (exemplo: apagar produtos), coloque duas linhas de traços e a descrição no meio dos traços no começo do bloco.

Para blocos de ações mais comuns, (ações dentro desse bloco importante, na ação apagar produtos, para um produto envolve a ação obter o produto, apagar a foto e apagar o registro do banco de dados), use o comentário C++ ( // ) em uma linha mesmo.

Ainda existem dezenas de outras tags @. Tal como @link, @see, @version, @access, etc mas isso você aprende no http://www.phpdoc.org/ porque a minha intenção aqui é lhe mostrar padrões a seguir e não a dominar o PhpDOC!

 

E aqui encerra essa primeira parte! Para saber o que vem na próxima, verifique o indíce no topo desse artigo. Eu vou tentar concluir ela para daqui 1 semana, fiquem antenados!


Até mais!
Alfred Reinold Baudisch
alfred@auriumsoft.com.br

www.auriumsoft.com.br/blog/

 

Auriumsoft – Inteligência, Tecnologia e Vídeo
www.auriumsoft.com.br

AuriumHost – Hospedagem de qualquer tecnologia e banco de dados!
www.auriumhost.com.br





Windows Server 2008 Foundation



 

Inclua um comentário sobre o artigo Topo
Elogios e críticas são muito bem vindos, porém o comentário deve ter referência ao artigo em pauta.
O portal e o autor agradecem.
Nome:    
E-mail:      
Comentários:    
Digite a palavra abaixo:  
Para dúvidas técnicas, NÃO UTILIZE ESTE ESPAÇO, utilize nosso fórum de discussão.
http://linhadecodigo.com.br/cs2/forum
 
Comentários sobre o artigo Ver Todos comentários
A organização dos arquivos é importante para o desenvolvimento!
muito bom o artigo!!!
Quem enviou: Deyvide
Postado em: 31/5/2010 0:00:00
Também estou ansioso pela continuação.
Muito bom o artigo.
Quem enviou: Marcos
Postado em: 5/11/2009 0:00:00
Também estou esperando a parte 2 e a 3

Alfred Reinold Baudisch, você é um dos melhores do Brasil, e continue assim

Abraços!!!


Quem enviou: Williams
Postado em: 21/6/2008 0:00:00
cade a parte 2???
to ansioso
Quem enviou: jonatan
Postado em: 22/3/2008 0:00:00
Cara, muito bom mesmo.
Bem organizado.
Quem enviou: Junior
Postado em: 1/9/2007 0:00:00
Gostei muito de seu texto Alfred Reinoldi e serviu de lição para mim a técnica que você ensina Ordem e localização dos Arquivos.
Add aos favoritos e vou retornar para ler outros textos seus.
Sucesso para você e abraço da equipe
do jornal O Brasileirinho www.obrasileirinho.com.br
Quem enviou: Jackson Rubem
Postado em: 2/4/2007 0:00:00
É isso ai...foi uma ''luz'' pra mim. To me ''organizando'' agora..hheh

abraços e sucesso Alfred!
Quem enviou: Marcio
Postado em: 29/8/2006 0:00:00
A continuação desse artigo (Parte 2), depois de muito atraso, rs, está em produção. Logo será publicado.
Quem enviou: Alfred R. Baudisch
Postado em: 9/8/2006 0:00:00
Lilian, muito obrigado por suas palavras.

Fabyo, na verdade toda a organização e padronização é algo pessoal. Conforme falei no começo do artigo, o que quero mostrar é meu padrão para o pessoal e assim, aqueles que não têm idéia do que fazer ou não sabem como padronizar, podem conseguir uma "luz". ;)

Marcelo, como falei para o Fabyo, realmente minha intenção aqui é dar mais uma "luz" e assim, cada um se adapta ao que achar melhor.
Quem enviou: Alfred R. Baudisch
Postado em: 6/3/2006 0:00:00
Gostei muito do artigo, tipo ja tinha uma ideia para organização mas este artigo me ajudo a melhorar as ideias de organização,

sem mais,,,
Quem enviou: Marcelo
Postado em: 5/3/2006 0:00:00
Outros artigos do autor Topo
Aplicando AJAX com PHP, parte 2 - Combos e validação de formulário
Instalando Apache + MySQL + PHP 5 no Windows - (Segunda edição)
O que é AJAX e como aplicá-la com PHP, parte 1
PHP: Formulários e upload de múltiplos arquivos e fotos
Aprenda PHP e torne-se um bom programador sem gastar quase nada - Revisado e atualizado
Aprenda PHP e torne-se um bom programador sem gastar quase nada
Instalando Apache + MySQL + PHP 5 no Windows
Variáveis Superglobais em qualquer versão do PHP4
Sistema de autenticação de usuários em PHP usando sessões e MySQL
Manipulando dados de formulários com PHP – Parte 2 (Upload de Arquivos)
Manipulando dados de formulários com PHP – Parte 1
Criando cláusulas SQL automaticamente através da classe "clausulas_sql".
PHP: Upload de imagens com segurança
Artigos relacionados Topo
IV ENSOL - Performance de PHP
Desenvolvedor Profissional. Será?
Economia e Liberdade: o software livre une o útil ao agradável
Sou programador, o mágico atende na sala ao lado
Xdebug: instalação, configuração e utilização com WAMP Server
Maldito sobrinho
PHP: Anti SQLInjection no Login
Migração do Joomla CMS e instalação do WAMPServer em Windows Server 2003
Fazendo um simples upload de arquivo com php
Tutorial - Criptografando senhas em PHP
PHP e MySQL: sistema de paginação
Classe para Conexão com o MySQL
PHP - Classe para Upload de Arquivo
Instalando e Configurando o EasyPHP
Upload de arquivos em Flash usando a Class FileReference e integração com PHP e MySQL
Servidor Web de MP3 com Amarok
Cadastro em PHP com AJAX + DOM
O novo motor da web
PHP5 + OOP - Parte 1 - Autoloading
Configurando o IIS para rodar php 5 – Windows XP SP2
Oracle PL/Web em versao Open Source com PHP e PostgreSQL
Utilizando Impressora Não-Fiscal Bematech em Aplicações WEB (PHP)
Formulários acessíveis à prova de spam
Administrando banco de dados MySql com PHPMyadmin
Miniframework PHP
Safe mode - Modo seguro no PHP
PHPDOC – Documentando bem seu código
Autenticação de usuários utilizando PHP/MySQL com Dreamweaver
Criando uma página de busca por registros em um banco de dados com PHP/MySQL usando Dreamweaver - Parte 3
Criando uma pagina de busca por registros em um banco de dados com PHP/MySQL usando Dreamweaver - Parte 2
Produtos relacionados Topo
Pacote: Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
Livro: Recursos Visuais na Web com PHP
Livro: Crie um Sistema Web com PHP 5 e AJAX - Controle de Estoque
CD/DVD: DVD Criando uma loja virtual completa com PHP e MySql
CD/DVD: Curso PHP, CSS, HTML - Vídeo Aula - 25 horas
Livro: Introdução à HTML e PHP
Livro: PHP Programando com Orientação a Objetos (inclui Design Patterns)
Livro: Ajax na Prática - Todo o poder dos melhores Frameworks Ajax aliados ao desenvolvimento Web 2.0 com PHP 5
Livro: Web Interativa com Ajax e PHP
Livro: PHP para quem conhece PHP
Livro: Desenvolvendo Aplicações Web com JSP, SERVLETS, JAVASERVER FACES, HIBERNATE, EJB 3 PERSISTENCE E AJAX
© Copyright 2001-2010 Codeline Editora, Comércio e Tecnologia Ltda. | Política de privacidade e de uso | Anuncie | Fale conosco

» Site hospedado na Porta 80 Web Hosting «
Nossos números
Dicas: 1.314
Códigos/scripts: 279
Funções de VBScript : 90
Funções JScript : 05
Livros: 1.805
Notícias: 2.488
Artigos: 2.972
Cases: 14
Oportunidades: 4.546
Publicidade

Conheça a loja do Linha de Código.

Microsoft indica Linha de Código.

Assine a Revista Mundo .NET
Portal de Vídeos .NET - os melhores vídeos .NET estão aqui
O que você fará com o Visual Studio 2010?
Revista Codificando .Net

Siga-nos no Twitter

Linha de Código no Orkut
Fórum de discussão do portal Linha de Código
Feeds
Oportunidades
Notícias
Artigos
Artigos personalizado
       (Por assunto)
Artigos personalizado
       (Por autor)
Portal Vídeos .NET
Portal Vídeos Delphi
LC Blog
       (Onde você faz a notícia)
Promoções
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
De: R$ 189,00
Por: R$ 126,00
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
De: R$ 149,70
Por: R$ 99,80
Promoção C# Básico (válido somente para pagamento via boleto bancário)
De: R$ 185,90
Por: R$ 136,00
Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
De: R$ 308,00
Por: R$ 219,00
Promoção Especial Infra
De: R$ 175,95
Por: R$ 136,00
CDs/DVDs
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
Por: R$ 59,00
DVD Curso de CorelDraw X4
Por: R$ 79,90
DVD Curso de Fireworks CS4
Por: R$ 49,90
DVD Curso de Indesign CS4
Por: R$ 55,00
DVD Curso de Efeitos Digitais
Por: R$ 49,90
Livros
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
De: R$ 129,00
Por: R$ 77,40
Foundation FLASH CS3 para Designers
Ciência Moderna
De: R$ 139,00
Por: R$ 83,40
Recursos Visuais na Web com PHP
Ciência Moderna
De: R$ 49,00
Por: R$ 29,40
Crie um Sistema Web com PHP 5 e AJAX - Controle de Estoque
Erica
De: R$ 99,50
Por: R$ 84,50
Crie Projetos Gráficos com Adobe Photoshop CS4, CorelDRAW X4 e Adobe InDesign CS4 - em Português
Erica
De: R$ 77,50
Por: R$ 65,80
E-Books
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Por: R$ 30,00
Manual de Estudos - Exame 70-291 - Windows Server 2003 (606 páginas) - entrega via download
Por: R$ 30,00
Dominando MS – Visio ® em 20 Passos - Melhores Práticas em Gestão de Projetos (entrega via download)
Por: R$ 30,00
MS-Project® 2007 - Melhores Práticas de Gestão de Projetos - Dominando MS – Project ® em 20 Passos (e-book com entrega via download)
Por: R$ 20,00
Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
Por: R$ 20,00
Os 10+ | Autores do dia
Israel Aéce
Júlio Cesar Fabris Battisti
Anderson Patricio
Alfred Reinold Baudisch
Luiz Felipe de Freitas
Robert Martim
Ramon Durães
Alessandro de Oliveira Faria
José Carlos Macoratti
Eric C M Oliveira
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
Criando aplicativos para o Orkut
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
Excel: fórmulas matriciais
ASP.NET 2.0 - Explorando o GridView
Iniciando um projeto de Nota Fiscal Eletrônica - NFe
PL/SQL - Procedures e Funções
Excel: Comparando Listas
PHP: Formulários e upload de múltiplos arquivos e fotos