HTML, JavaScript, PHP, ASP, .Net, C#, MySQL, Ms. SQL ...

ASP: Evitando o código Spaghetti

Como separar o ASP do HTML

asp boas práticas spaghetti sql

Com a ascenção e o crescimento no mercado de TI, o webdesigner e o programador são profissionais que lidam diariamente com ferramentas distintas: o Webdesigner cuida do layout e da usabilidade da página, enquanto o programador cuida das funcionalidades e impressão de resultados.

Em muitos lugares, é de costume encontrar estes 3 tipos de profissionais:

E como fazer para um profissional fornecer o que o outro precisa? Devido ao crescimento deste mercado, foi necessário conceder na estrutura de desenvolvimento vários parâmetros, em que o principal deles é a camada de apresentação (onde o usuário final tem acesso às informações).

Nas linguagens de Programação voltadas p/ a Web, já é possível trabalhar em situações na qual o código-fonte fica separado da codificação de algoritmos.

Este é um exemplo para quem tem o costume de trabalhar com o ASP, misturando a programação com o código HTML, tipicamente conhecido como "algoritmo spaghetti".

 

Cito então um exemplo de um datagrid em ASP, na qual conecto a um banco de dados, e faço imprimir a relação de estados brasileiros:

 

1. Conexão SQL

<% Dim objConexao

 sub abreconexao()

Set objConexao = CreateObject("ADODB.Connection")
   objConexao.commandTimeout=20
   'MySQL Localhost
   objConexao.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost; Database=leobredacom; User=root;Password=root;Option=3;"
   objConexao.Open
end sub

sub fechaconexao()
   objConexao.Close : Set objconexao = Nothing
end sub

 

2. Montando o datagrid utilizando o "algoritmo spaghetti".

<html>

   <head>...</head>

   <body>

      <table>

         <tr>

            <td>Código</td>

            <td>Nome</td>

        </tr>

 

<% strSQL = "SELECT ESTADO_COD, ESTADO_DESC FROM ESTADOS WHERE PAIS='BRASIL' ORDER BY ESTADO_DESC"

       call abreConexao : set objRecordset=CreateObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao
       while NOT objRecordset.EOF%>

        <tr>

          <td><%=objRecordset("ESTADO_COD")%></td>

          <td><%=objRecordset("ESTADO_DESC")%></td>

       </tr>

 

<%objRecordset.MoveNext : wend : objRecordset.Close : set objRecordset=nothing : call fechaConexao%>

       </table>

   </body>

</html>

Pelo código, a programação se misturou com o HTML, onde não é critério do Programador lidar com HTML, e nem o WebDesigner se interessar o que está no algoritmo. Com a popularidade de editores WYSIWYG, a página será editada, e a consulta poderá ir para o final da página, ou mesmo ser apagada, ocorrendo complicações futuras, brigas entre os dois profissionais (a mais provável), etc.

 

3. Montando o datagrid SEM utilizar o "algoritmo spaghetti".

<% strSQL = "SELECT ESTADO_COD, ESTADO_DESC FROM ESTADOS WHERE PAIS='BRASIL' ORDER BY ESTADO_DESC"

call abreConexao : set objRecordset=CreateObject("ADODB.Recordset") : objRecordset.cursorLocation=3 : objRecordset.Open strSQL, objConexao
i=0

redim ESTADO(objRecordset.RecordCount-1,1)

while NOT objRecordset.EOF

ESTADO(i,0) = int(objRecordset("ESTADO_COD")) 'Código do Estado

ESTADO(i,1) = objRecordset("ESTADO_DESC") 'Nome do Estado

i=i+1

objRecordset.MoveNext : wend : objRecordset.Close : set objRecordset=Nothing : call fechaConexao%>

 

<html>

   <head>...</head>

      <body>

         <table>

            <tr>

               <td>Código</td>

               <td>Nome</td>

          </tr>

<%for i=0 to uBound(ESTADO)%>

         <tr>

             <td><%=ESTADO(i,0)%></td>

             <td><%=ESTADO(i,1)%></td>

        </tr>

 <%next%>

     </table>

  </body>

</html>

Por este código, foi possível separar a programação da página em sí. Costumo adotar este padrão, inserindo TODAS as programações possíveis antes do código HTML. Se for preciso alterar o layout da página, basta o Webdesigner manipular dentro do HTML os valores do vetor ESTADO. Se apagar, basta consultar onde o vetor foi montado linha-a-linha, dizendo o que é cada informação do vetor através do "dicionário de informações" nos comentários...

TAGs

ajax arquivo asp boas práticas classe conexão sql connection string cursor location desativar programas erro cs0246 função global.asa global.asax google gráfico include rewriterule upload url amigável url rewrite


2010 - Leonardo Breda