Utilizar o mesmo formato de cabeçalho para iniciar os códigos ASP:


< %@ Language="VBScript"% >

''=====================================================
'' RESUMO DESCRITIVO DA PÁGINA
''=====================================================
'' Empresa:   NOME DA EMRPESA
'' Cliente:   NOME DO CLIENTE

      '' Projeto:   NOME DO PROJETO    '' Gerentes:  NOME DOS GPS
''====================================================
'' Nome da página: CadastrarNononono.asp
'' Data de criação: 20 de Agosto de 2008  
'' Autor:           Luiz Agnelo
'' Funcionalidade: Contém o processo de cadastramento
''                  de que ........ da EMPRESA.
''====================================================
'' Atualizações:   
'' 
''====================================================

Obrigar a declaração de variáveis

Sempre utilizar a opção explicita de declaração de variáveis, desta forma fica obrigado a utilização do Dim e Const.

Option Explicit

Para facilitar a leitura, podemos declarar a variável e na mesma linha setar sua ação ou valor:


Dim strNome : strNome = Request.form("strNome")
Nota: Não esquecer do “:”

Tipagem de variáveis

No ASP não é definido o tipo da variável, mas para facilitar, podemos inserir o tipo antes do nome da variável. Com isto evitaremos confusão na hora de instanciar valores:


Dim strNome ' String
Dim intConta ' Inteiro
Dim blnVerifica ' Boleano - True/False

Bibliotecas para Includes

Ao incluir trechos de código, utilizamos conforme abaixo:


< !--#include virtual="/planilha.asp"-- > 
< !--#include file="planilha.asp"-- >

As diferenças entre realizar o include "virtual" ao invés de "file" consistem em que a primeira tem em conta a raiz de seu domínio e com a segunda se tem em conta o lugar onde está o documento no qual estamos incluindo o arquivo.

À princípio, pode ser mais útil trabalhar com o modo "virtual" pois se movemos de diretório as páginas de nosso site os includes continuarão funcionando.

Como boa prática, podemos agrupas todos os includes no topo de nossa página, como no exemplo a seguir:


% >
 < !--#include file="../comum/libSessao.asp" -- >
 < !--#include file="../comum/libFuncoes.asp" -- >
 < !--#include file="../novo layout/t_begin.asp" -- >
 < !--#include file="../novo layout/t_head.asp" -- >
 < %
Para includes que contém código HTML, é necessário que o mesmo seja incluído no local específico onde aparecerá o mesmo.

Agrupar variáveisde mesmo tipo

É interessante declararmos e setarmos valores para variáveis de mesmo tipo ou de mesmo contexto em blocos de códigos separados:



   '===========================
   ' DEFINE VARIÁVEIS DE SESSÃO
   '===========================
   Session("TelaAnterior")      = "javascript: window.history.go(-1);"
   Session("strTituloPagina")   = "Cadastro de XXXXX"
   Session("arquivosCSS")       = "css/layOut"
   Session("CaminhoDaPagina")    = "NoNoNoNo > Cadastro"
   Session("libsJS")            = "clsNONononono"

Set ObjNononon = Server.CreateObject("PCL_Nononono.CL_NOnonono")
Set RsNonononn = ObjNononon.fRetornaNononono(valor)

Instância de Objetos e coleções

Ao setar um novo objeto ou carregar um RecordSet com uma coleção de dados, devemos instanciar seus valores em variáveis locais e logo desalocar estes espaços na memória:


Dim RsTeste
Dim VarLocal01
Dim VarLocal02
Dim VarLocal03

VarLocal01 = ""
VarLocal02 = ""
VarLocal03 = ""

     Set ObjTeste = Server.CreateObject("PCL_Teste.CL_Teste")
     Set RsTeste = ObjTeste.fRetornadados()
   
 
     If Not RsTeste.Eof Then
       VarLocal01 = RsTeste("campo_01")
       VarLocal02 = RsTeste("campo_02")
       VarLocal03 = RsTeste("campo_03")
           .
           .
           .     
     End If
   
     Set ObjInforme = Nothing
Set RsInforme = Nothing

Trechos de Códigos Cliente

Todo código javascript deve estar contido dentro das tags:


<html>
<head>
    <title>< %= Session("strTituloPagina") % ></title>
    <meta name="author" content="Equipe WebSeguros WSG">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="content-type" content="charset=iso-8859-1">

<script type="text/javascript" language="JavaScript" src="teste.js"></script>

    <script type="text/javascript" language="JavaScript">
    var varGlobal1;
    var varGlobal2;

          function Teste()
          {
       
          }
    </script>
</head>

Inicializar JavaScript

Apenas por padronização, podíamos usar o seguinte código, ao invés de incluir tudo nas tags HTML do FORM ou BODY, como antes:


ANTES:
<body onload="sMostrarGuiaCliente();
    gflgTipoPessoa = gobjProposta.flgTipoPessoa;
    sPreencheDadosProposta();
    sPreencheComboBoxUF(document.forms[0].cboUFCorrespondencia);
    sPreencheComboBoxUFAgendamento();
    sLiberaCamposDebitoAutomatico();">

RECOMENDADO:
 <script type="text/javascript" language="JavaScript">

function inicializar()
      {
          Formulario = document.forms[0];
    sMostrarGuiaCliente();
    gflgTipoPessoa = gobjProposta.flgTipoPessoa;
    .
    .
    .
    sLiberaCamposDebitoAutomatico();
}

      window.onload = inicializar;

</script>

Submeter um Formulário:

Regra básica, não submeter um formulário usando recurso do HTML, usar sempre javascript como no exemplo abaixo:


ERRADO:
<body>
      <form action="pagina_destino.asp" method="post">
               <input type="submit" id="btnLiberar" value="Salvar" />
            </form>

CERTO:
<head>
          <script type="text/javascript" language="JavaScript">
 
  function submeter()
  {
      if (Faz_a_validação_dos_campos(Formulario))
      {
          Formulario.action = "pagina_destino.asp";
          Formulario.method = "post";
          Formulario.submit();
      }   
  }
</script>
</head>
<body>
            <form action="#" method="POST">
<input type="button" id="btnLiberar" onclick="submeter();" value="Salvar" />
            </form>
</body>

Tratamento de Erros

Outra Regra básica, não usar o On Error Resume Next quando não houver tratamento de erro, fica totalmente sem sentido na página, pois apenas esconde o erro e gera inconsistência de dados, exibindo informações equivocadas para o usuário, já que o erro não esta sendo tratado como deveria. Prática correta:


On Error Resume Next

If Err.number > 0 Then
    Trata o erro e exibe de forma amigável para o usuário.
End If