Linguagem SQL: torne seu código SQL mais legível
Este artigo mostra algumas técnicas para tornar o código armazenado em scripts SQL mais “polido”, ou seja, mais adequado para receber modificações no futuro.
Sempre houve a preocupação com diversos aspectos relacionados ao código fonte, desde a sua eficácia e eficiência até questões não técnicas. Entretanto, nos últimos anos a questão da manutenibilidade do código vem sendo tratada com mais cuidado. Modificações não funcionais podem ser aplicadas a códigos fonte para torná-los mais “polidos”, ou seja, bem apresentáveis. Esse polimento possui diversas vantagens, principalmente quando é necessário realizar modificações futuras que necessitam de compreensão profunda do que o código representa do ponto de vista de funcionalidades implementadas.
A partir desse contexto, esse artigo apresentará recomendações, sugestões e melhores práticas para tornar o código contendo instruções SQL mais simples e fácil de ser compreendido. A escolha da linguagem SQL se deve ao fato de que ela é o recurso computacional mais empregado para lidar com dados.
O foco desse artigo é apresentar técnicas e práticas para tornar mais fácil a compreensão do conteúdo de scripts que contêm comandos SQL, um dos artefatos mais comuns para quem trabalha com banco de dados no dia a dia. A partir da colocação em prática das técnicas apresentadas é possível melhorar e aprimorar tanto as habilidades necessárias para lidar com dados quanto a capacidade de compreender o código fonte armazenado dentro de um script SQL.
Formatação de texto SQL
Um script SQL geralmente contém instruções SQL, comandos condicionais, variáveis, comentários, palavras-chave e outros elementos textuais importantes para lidar com dados e representar a lógica de algum algoritmo. Contudo, muitas vezes nos deparamos com instruções complexas que ocupam muitas linhas e manipulam diversos objetos ao mesmo tempo.
Nesses casos é comum encontrar instruções SQL dentro do script que possuem várias cláusulas, opções e detalhes sem nenhum tipo de formatação. Essa falta de formatação torna difícil a compreensão e manutenção da instrução, pois é necessário esforço mental adicional para organizar os elementos em linhas e colunas diferentes antes de analisar o que realmente a instrução faz. Por exemplo, a instrução SELECT parcial da Listagem 1 contém várias cláusulas sem nenhum tipo de formatação, o que torna sua compreensão mais difícil, apesar da colorização de certos elementos sintáticos feita por alguma ferramenta IDE de edição de scripts, tal como o Management Studio fornecido com o SQL Server.
Listagem 1.Parte de uma instrução SELECT complexa e sem nenhuma formatação.
SELECT d2_grupo GRUPO, Cast(Sum(d2_total) AS NUMERIC(10,2))TOTAL, pa1_tbtrat TIPO FROM sd2tb0 D2, se1tb0 E1, pa1tb0 PA1 WHERE d2_emissao >= '20060201' AND d2_emissao <= '20060228' AND D2.d_e_l_e_t_ <> '*' AND PA1.d_e_l_e_t_ <> '*' AND E1.d_e_l_e_t_ <> '*' AND d2_cliente >= ' ' AND d2_cliente <= 'zzzzzz' AND Substring(e1_tipo, 1, 2) = 'NF' AND ei_contr <> '' AND d2_loja >= ' ' AND d2_loja <= ' ' AND e1_emissao = d2_emissao AND e1_parcela IN ('','A') AND e1_naturez NOT IN ('COFINS', 'PIS', 'CSLL', 'INSS') AND e1_num = d2_doc AND e1_contr <> '' AND pa1_contr = e1_contr AND d2_filial = 'EC' AND e1_contr >= ' ' AND e1_contr <= 'zzzzzzzz' AND sa1 -> a1_regiao >= '1 ' AND sa1 -> a1_regiao <= '1 ' GROUP BY pa1_tptrat, ...
Atualmente existem diversas ferramentas de terceiros que permitem a formatação de scripts e instruções SQL para torná-las mais fáceis de serem compreendidas e manipuladas. Essas ferramentas são chamadas de embelezadores de código (code beautifiers) e possuem como objetivo formatar o código fonte de modo a deixá-lo mais legível e de claro entendimento sem modifica-lo sintaticamente e semanticamente.
Por exemplo, o Instant SQL Formatter permite separar em linhas e colunas os elementos de uma instrução SELECT para facilitar a visualização. De fato, uma vez que se experimenta o uso em larga escala da formatação de SQL fica muito mais fácil compreender instruções SQL complexas. Por exemplo, essa ferramenta faz a formatação de instruções SELECT colocando colunas, tabelas e expressões da cláusula WHERE em linhas separadas, o que simplifica o processo de entendimento de quais objetos estão sendo utilizados. A Listagem 2 mostra como parte da instrução SQL da Listagem 1 ficaria após a formatação.
Listagem 2.Instrução SELECT daListagem 1formatada para facilitar a compreensão.
SELECT d2_grupo GRUPO,
Cast(Sum(d2_total) AS NUMERIC(10,2))TOTAL,
pa1_tbtrat TIPO
FROM sd2tb0 D2,
se1tb0 E1,
pa1tb0 PA1
WHERE d2_emissao >= '20060201'
AND d2_emissao <= '20060228'
AND D2.d_e_l_e_t_ <> '*'
AND PA1.d_e_l_e_t_ <> '*'
AND E1.d_e_l_e_t_ <> '*'
AND d2_cliente >= ' '
AND d2_cliente <= 'zzzzzz'
AND Substring(e1_tipo, 1, 2) = 'NF'
AND ei_contr <> ''
AND d2_loja >= ' '
AND d2_loja <= ' '
AND e1_emissao = d2_emissao
AND e1_parcela IN ('','A')
AND e1_naturez NOT IN ('COFINS', 'PIS', 'CSLL', 'INSS')
AND e1_num = d2_doc
AND e1_contr <> ''
AND pa1_contr = e1_contr
AND d2_filial = 'EC'
AND e1_contr >= ' '
AND e1_contr <= 'zzzzzzzz'
AND sa1 -> a1_regiao >= '1 '
AND sa1 -> a1_regiao <= '1 '
GROUP BY pa1_tptrat,
..."
[...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo