{"id":733,"date":"2024-07-08T21:14:52","date_gmt":"2024-07-09T00:14:52","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?page_id=733"},"modified":"2024-08-19T13:42:30","modified_gmt":"2024-08-19T16:42:30","slug":"codigo-limpo-parte-4-formatacao-consistente","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/codigo-limpo-parte-4-formatacao-consistente\/","title":{"rendered":"C\u00f3digo-Limpo Parte 4: Formata\u00e7\u00e3o consistente"},"content":{"rendered":"\n<p>A formata\u00e7\u00e3o consistente \u00e9 um dos aspectos mais fundamentais do c\u00f3digo-limpo e, embora possa parecer uma quest\u00e3o puramente est\u00e9tica, seu impacto na legibilidade, na manutenibilidade e na colabora\u00e7\u00e3o dentro de um projeto de software \u00e9 profundo. Quando o c\u00f3digo \u00e9 formatado de maneira uniforme, ele se torna mais f\u00e1cil de ler e compreender, independentemente de quem o escreveu. Isso \u00e9 crucial em projetos onde m\u00faltiplos desenvolvedores colaboram e precisam entender rapidamente o c\u00f3digo uns dos outros. Al\u00e9m disso, a formata\u00e7\u00e3o consistente ajuda a evitar erros sutis que podem surgir devido \u00e0 m\u00e1 organiza\u00e7\u00e3o do c\u00f3digo.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Robert C. Martin, em &#8220;C\u00f3digo-Limpo&#8221;, enfatiza que a formata\u00e7\u00e3o do c\u00f3digo \u00e9 a primeira coisa que um leitor percebe. Um c\u00f3digo bem formatado n\u00e3o apenas demonstra profissionalismo, mas tamb\u00e9m transmite a mensagem de que o desenvolvedor se preocupa com a qualidade e a clareza do seu trabalho. Este artigo explorar\u00e1 a import\u00e2ncia da formata\u00e7\u00e3o consistente, as vantagens que ela traz e como implement\u00e1-la de forma eficaz no desenvolvimento de software.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Quarto Pilar: Formata\u00e7\u00e3o Consistente<\/h4>\n\n\n\n<p>A formata\u00e7\u00e3o consistente abrange todas as pr\u00e1ticas que garantem que o c\u00f3digo mantenha um estilo uniforme em todo o projeto. Isso inclui a utiliza\u00e7\u00e3o de conven\u00e7\u00f5es de nomea\u00e7\u00e3o, indenta\u00e7\u00e3o, espa\u00e7amento, e organiza\u00e7\u00e3o do c\u00f3digo. Uma formata\u00e7\u00e3o consistente torna o c\u00f3digo previs\u00edvel e f\u00e1cil de seguir, facilitando a leitura e a compreens\u00e3o, n\u00e3o apenas para o autor original, mas para qualquer desenvolvedor que trabalhe no projeto.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">A Import\u00e2ncia da Formata\u00e7\u00e3o Consistente<\/h5>\n\n\n\n<p>Robert C. Martin, em seu livro &#8220;C\u00f3digo-Limpo&#8221;, enfatiza que a formata\u00e7\u00e3o do c\u00f3digo \u00e9 uma das primeiras coisas que um leitor percebe. C\u00f3digo bem formatado transmite profissionalismo e aten\u00e7\u00e3o aos detalhes. Aqui est\u00e3o algumas raz\u00f5es pelas quais a formata\u00e7\u00e3o consistente \u00e9 importante:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Legibilidade<\/strong>: C\u00f3digo bem formatado \u00e9 mais f\u00e1cil de ler e entender. Linhas de c\u00f3digo claramente organizadas ajudam os desenvolvedores a seguir a l\u00f3gica do programa sem esfor\u00e7o adicional.<\/li>\n\n\n\n<li><strong>Colabora\u00e7\u00e3o<\/strong>: Em projetos com m\u00faltiplos desenvolvedores, a formata\u00e7\u00e3o consistente garante que todos sigam o mesmo estilo, tornando a colabora\u00e7\u00e3o mais eficiente e reduzindo o tempo gasto em revis\u00f5es de c\u00f3digo devido a diferen\u00e7as de estilo.<\/li>\n\n\n\n<li><strong>Manuten\u00e7\u00e3o<\/strong>: C\u00f3digo formatado de maneira consistente \u00e9 mais f\u00e1cil de manter e refatorar. Mudan\u00e7as podem ser feitas com confian\u00e7a, sabendo que o estilo e a estrutura ser\u00e3o preservados.<\/li>\n\n\n\n<li><strong>Preven\u00e7\u00e3o de Erros<\/strong>: C\u00f3digo desorganizado pode esconder erros sutis. Uma formata\u00e7\u00e3o clara ajuda a evitar problemas como blocos de c\u00f3digo mal identificados ou fechamento incorreto de estruturas de controle.<\/li>\n<\/ol>\n\n\n\n<h5 class=\"wp-block-heading\">Vantagens da Formata\u00e7\u00e3o Consistente<\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Melhora a Legibilidade<\/strong>: A formata\u00e7\u00e3o consistente facilita a leitura do c\u00f3digo, permitindo que os desenvolvedores compreendam rapidamente a l\u00f3gica e a estrutura do programa.<\/li>\n\n\n\n<li><strong>Facilita a Manuten\u00e7\u00e3o<\/strong>: C\u00f3digo uniformemente formatado \u00e9 mais f\u00e1cil de manter. Altera\u00e7\u00f5es e corre\u00e7\u00f5es podem ser implementadas de maneira mais eficiente.<\/li>\n\n\n\n<li><strong>Promove a Colabora\u00e7\u00e3o<\/strong>: Quando todos os membros da equipe seguem as mesmas diretrizes de formata\u00e7\u00e3o, a colabora\u00e7\u00e3o se torna mais eficaz. O c\u00f3digo se torna previs\u00edvel e compreens\u00edvel para todos.<\/li>\n\n\n\n<li><strong>Reduz Erros<\/strong>: A formata\u00e7\u00e3o clara ajuda a identificar erros rapidamente. Blocos de c\u00f3digo bem alinhados e indentados tornam os problemas mais vis\u00edveis.<\/li>\n<\/ol>\n\n\n\n<h5 class=\"wp-block-heading\">Implementa\u00e7\u00e3o de Formata\u00e7\u00e3o Consistente<\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Definir Conven\u00e7\u00f5es de Codifica\u00e7\u00e3o<\/strong>: Estabele\u00e7a conven\u00e7\u00f5es de codifica\u00e7\u00e3o claras e documentadas para o projeto. Isso inclui regras para nomea\u00e7\u00e3o de vari\u00e1veis, fun\u00e7\u00f5es, classes, indenta\u00e7\u00e3o, espa\u00e7amento e organiza\u00e7\u00e3o de arquivos.<\/li>\n\n\n\n<li><strong>Utilizar Ferramentas de Formata\u00e7\u00e3o<\/strong>: Utilize ferramentas autom\u00e1ticas de formata\u00e7\u00e3o de c\u00f3digo. O Delphi j\u00e1 possui uma ferramenta interna que pode inclusive ser personalizada, vejamos mais abaixo como fazer isso. Essas ferramentas garantem que o c\u00f3digo seja formatado de maneira consistente com base nas conven\u00e7\u00f5es definidas.<\/li>\n\n\n\n<li><strong>Revis\u00f5es de C\u00f3digo Rigorosas<\/strong>: Durante as revis\u00f5es de c\u00f3digo, preste aten\u00e7\u00e3o \u00e0 formata\u00e7\u00e3o. Certifique-se de que todos os contribuintes sigam as conven\u00e7\u00f5es estabelecidas.<\/li>\n\n\n\n<li><strong>Configurar o Ambiente de Desenvolvimento<\/strong>: Configure o ambiente de desenvolvimento (IDE) para aplicar automaticamente as conven\u00e7\u00f5es de formata\u00e7\u00e3o. Isso inclui a configura\u00e7\u00e3o de regras de formata\u00e7\u00e3o e a ativa\u00e7\u00e3o de plugins que auxiliem na manuten\u00e7\u00e3o do estilo do c\u00f3digo.<\/li>\n\n\n\n<li><strong>Educa\u00e7\u00e3o e Treinamento<\/strong>: Garanta que todos os membros da equipe estejam familiarizados com as conven\u00e7\u00f5es de formata\u00e7\u00e3o e saibam como aplic\u00e1-las. Realize sess\u00f5es de treinamento se necess\u00e1rio.<\/li>\n<\/ol>\n\n\n\n<h5 class=\"wp-block-heading\">Exemplos de Formata\u00e7\u00e3o Consistente<\/h5>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Indenta\u00e7\u00e3o Consistente<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Antes<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">if condicao then\nbegin\n  executarAcao;\n    outraAcao;\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">if condicao then\nbegin\n  executarAcao;\n  outraAcao;\nend;\n<\/pre><\/div>\n\n\n\n<p>Em um c\u00f3digo com apenas duas linhas, talvez pare\u00e7a algo bobo que n\u00e3o devemos dar import\u00e2ncia, por\u00e9m em codifica\u00e7\u00f5es mais longas (n\u00e3o ultrapassando os limites de linhas que j\u00e1 comentamos em outro artigo) n\u00e3o se preocupar com a identa\u00e7\u00e3o e deixar cada linha com identa\u00e7\u00e3o incosistende, torna o c\u00f3digo menos leg\u00edvel.<\/p>\n\n\n\n<p>Explicando um pouco melhor, vejamos.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Indenta\u00e7\u00e3o Consistente<\/h5>\n\n\n\n<p>A indenta\u00e7\u00e3o consistente \u00e9 fundamental para a legibilidade do c\u00f3digo. Ela ajuda a visualizar a estrutura do c\u00f3digo e a hierarquia de blocos de controle, como loops e condi\u00e7\u00f5es. No Delphi, a ferramenta de formata\u00e7\u00e3o permite configurar v\u00e1rias op\u00e7\u00f5es para garantir uma indenta\u00e7\u00e3o uniforme. Vamos dar alguns exemplos e indicar onde podemos configurar a formata\u00e7\u00e3o no Delphi. Tudo que indicarmos abaixo \u00e9 encontrado em <em><strong>Tools &gt; Options &gt; Language &gt; Formatter &gt; Delphi<\/strong><\/em>. E uma vez configurado, basta usar <strong>Ctrl + D<\/strong> para formatar automaticamente o c\u00f3digo.<\/p>\n\n\n\n<p><strong>Configura\u00e7\u00f5es de Indenta\u00e7\u00e3o:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Continuation indent<\/strong>: Defina para <code>2<\/code>. Esta configura\u00e7\u00e3o adiciona uma indenta\u00e7\u00e3o adicional para linhas de continua\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Indent blocks between Begin and End<\/strong>: Defina para <code>True<\/code>. Isso garante que os blocos de c\u00f3digo entre <code>Begin<\/code> e <code>End<\/code> sejam corretamente indentados.<\/li>\n\n\n\n<li><strong>Indent case contents<\/strong>: Defina para <code>True<\/code>. Isso garante que o conte\u00fado dos casos em uma instru\u00e7\u00e3o <code>case<\/code> seja indentado.<\/li>\n\n\n\n<li><strong>Indent case labels<\/strong>: Defina para <code>True<\/code>. Isso aplica indenta\u00e7\u00e3o nas labels dos casos.<\/li>\n<\/ol>\n\n\n\n<p><strong>Exemplo de C\u00f3digo:<\/strong><\/p>\n\n\n\n<p><strong>Antes<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.ExemploIndentacao;\nvar\n  i: Integer;\nbegin\nfor i := 0 to 10 do\nbegin\nif i mod 2 = 0 then\nShowMessage('N\u00famero par: ' + IntToStr(i))\nelse\nShowMessage('N\u00famero \u00edmpar: ' + IntToStr(i));\nend;\ncase i of\n0: ShowMessage('Zero');\n1: ShowMessage('Um');\nelse\nShowMessage('Outro n\u00famero');\nend;\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.ExemploIndentacao;\nvar\n  i: Integer;\nbegin\n  for i := 0 to 10 do\n  begin\n    if i mod 2 = 0 then\n      ShowMessage('N\u00famero par: ' + IntToStr(i))\n    else\n      ShowMessage('N\u00famero \u00edmpar: ' + IntToStr(i));\n  end;\n\n  case i of\n    0: ShowMessage('Zero');\n    1: ShowMessage('Um');\n  else\n    ShowMessage('Outro n\u00famero');\n  end;\nend;\n<\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">Espa\u00e7amento Consistente<\/h5>\n\n\n\n<p>O espa\u00e7amento consistente ajuda a tornar o c\u00f3digo mais leg\u00edvel ao definir padr\u00f5es claros para o uso de espa\u00e7os ao redor de operadores, palavras-chave e delimitadores. Caso n\u00e3o saiba, n\u00e3o s\u00e3o indicados espa\u00e7os antes e depois de par\u00eanteses, t\u00e3o pouco &#8220;grudar&#8221; operadores sem nenhum espa\u00e7o, isso s\u00e3o apenas alguns exemplos.<\/p>\n\n\n\n<p><strong>Configura\u00e7\u00f5es de Espa\u00e7amento:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Set spacing around colons<\/strong>: Configure como <code>After only<\/code>. Define o espa\u00e7amento ao redor dos dois pontos.<\/li>\n\n\n\n<li><strong>Set spacing around commas<\/strong>: Configure como <code>After only<\/code>. Define o espa\u00e7amento ao redor das v\u00edrgulas.<\/li>\n\n\n\n<li><strong>Set spacing for \/\/ comments<\/strong>: Configure como <code>Before and after<\/code>. Isso assegura que haja espa\u00e7amento adequado antes e depois dos coment\u00e1rios.<\/li>\n\n\n\n<li><strong>Set spacing around assignment operators<\/strong>: Configure como <code>Before and after<\/code>. Define o espa\u00e7amento ao redor dos operadores de atribui\u00e7\u00e3o.<\/li>\n<\/ol>\n\n\n\n<p><strong>Exemplo de C\u00f3digo:<\/strong><\/p>\n\n\n\n<p><strong>Antes:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.ExemploEspacamento;\nvar\n  x,y: Integer;\nbegin\n  x:=10;\n  y:=20;\n  if(x&gt;y)then\n  begin\n    ShowMessage('x \u00e9 maior que y');\n  end else begin\n    ShowMessage('x \u00e9 menor ou igual a y');\n  end;\n  x:=y+10;\n  ShowMessage('Valor de x: ' + IntToStr(x));\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.ExemploEspacamento;\nvar\n  x, y: Integer;\nbegin\n  x := 10;\n  y := 20;\n\n  if (x &gt; y) then\n  begin\n    ShowMessage('x \u00e9 maior que y');\n  end\n  else\n  begin\n    ShowMessage('x \u00e9 menor ou igual a y');\n  end;\n\n  x := y + 10;\n  ShowMessage('Valor de x: ' + IntToStr(x));\nend;\n<\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">Organiza\u00e7\u00e3o Consistente de C\u00f3digo<\/h5>\n\n\n\n<p>A organiza\u00e7\u00e3o consistente do c\u00f3digo \u00e9 essencial para garantir que ele seja f\u00e1cil de navegar e compreender. Isso inclui a estrutura l\u00f3gica dos arquivos, a ordem das declara\u00e7\u00f5es de fun\u00e7\u00f5es e m\u00e9todos, e a utiliza\u00e7\u00e3o de se\u00e7\u00f5es claras para diferentes partes do c\u00f3digo, como vari\u00e1veis, constantes e implementa\u00e7\u00e3o de m\u00e9todos. Um c\u00f3digo bem organizado n\u00e3o apenas melhora a legibilidade, mas tamb\u00e9m facilita a manuten\u00e7\u00e3o e a depura\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>Exemplo de C\u00f3digo:<\/strong><\/p>\n\n\n\n<p><strong>Antes:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.ButtonClick(Sender: TObject);\nbegin\n  ShowMessage('Bot\u00e3o clicado');\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  \/\/ Inicializa\u00e7\u00f5es\n  Label1.Caption := 'Formul\u00e1rio criado';\nend;\n\nfunction TForm1.CalcularSoma(a, b: Integer): Integer;\nbegin\n  Result := a + b;\nend;\n\nprocedure TForm1.ExibirMensagem(const Mensagem: string);\nbegin\n  ShowMessage(Mensagem);\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">\/\/ Declara\u00e7\u00f5es de m\u00e9todos da classe TForm1\ntype\n  TForm1 = class(TForm)\n    Label1: TLabel;\n    Button1: TButton;\n    procedure FormCreate(Sender: TObject);\n    procedure ButtonClick(Sender: TObject);\n  private\n    function CalcularSoma(a, b: Integer): Integer;\n    procedure ExibirMensagem(const Mensagem: string);\n  end;\n\n\/\/ Implementa\u00e7\u00e3o dos m\u00e9todos da classe TForm1\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n  \/\/ Inicializa\u00e7\u00f5es\n  Label1.Caption := 'Formul\u00e1rio criado';\nend;\n\nprocedure TForm1.ButtonClick(Sender: TObject);\nvar\n  Soma: Integer;\nbegin\n  Soma := CalcularSoma(5, 10);\n  ExibirMensagem('Bot\u00e3o clicado. Soma: ' + IntToStr(Soma));\nend;\n\nfunction TForm1.CalcularSoma(a, b: Integer): Integer;\nbegin\n  Result := a + b;\nend;\n\nprocedure TForm1.ExibirMensagem(const Mensagem: string);\nbegin\n  ShowMessage(Mensagem);\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Detalhamento das Melhorias:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Declara\u00e7\u00f5es e Implementa\u00e7\u00f5es Separadas<\/strong>: No exemplo &#8220;Depois&#8221;, as declara\u00e7\u00f5es de m\u00e9todos est\u00e3o agrupadas na defini\u00e7\u00e3o da classe <code>TForm1<\/code>, enquanto as implementa\u00e7\u00f5es est\u00e3o separadas. Isso facilita a localiza\u00e7\u00e3o e a leitura das assinaturas dos m\u00e9todos.<\/li>\n\n\n\n<li><strong>Agrupamento por Funcionalidade<\/strong>: M\u00e9todos relacionados, como <code>FormCreate<\/code> e <code>ButtonClick<\/code>, s\u00e3o agrupados para mostrar a sequ\u00eancia l\u00f3gica das opera\u00e7\u00f5es.<\/li>\n\n\n\n<li><strong>Utiliza\u00e7\u00e3o de M\u00e9todos Privados<\/strong>: M\u00e9todos auxiliares, como <code>CalcularSoma<\/code> e <code>ExibirMensagem<\/code>, s\u00e3o declarados como privados e colocados ap\u00f3s os m\u00e9todos p\u00fablicos, indicando claramente sua visibilidade e uso interno.<\/li>\n\n\n\n<li><strong>Coment\u00e1rios Explicativos<\/strong>: Adicionar coment\u00e1rios claros para se\u00e7\u00f5es do c\u00f3digo ajuda a entender rapidamente o prop\u00f3sito de diferentes blocos, como inicializa\u00e7\u00f5es ou manipula\u00e7\u00e3o de eventos.<\/li>\n<\/ol>\n\n\n\n<p>Perceba tamb\u00e9m uma sutil mudan\u00e7a. A implementa\u00e7\u00e3o dos m\u00e9todos na se\u00e7\u00e3o Implementation segue a mesma ordem da declara\u00e7\u00e3o em Interface, ou seja, <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Primeiro<\/strong>: FormCreate<\/li>\n\n\n\n<li><strong>Segundo<\/strong>: ButtonClick<\/li>\n\n\n\n<li><strong>Terceiro<\/strong>: CalcularSoma<\/li>\n\n\n\n<li><strong>Quarto<\/strong>: ExibirMensagem<\/li>\n<\/ol>\n\n\n\n<p>Todos s\u00e3o encontrados na mesma ondem que foram declarados l\u00e1 em cima.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Personalizando a Formata\u00e7\u00e3o de C\u00f3digo no Delphi<\/h3>\n\n\n\n<p>\u00c9 claro que nessa s\u00e9rie de artigos estamos sendo mais superficiais para que voc\u00ea leitor aprenda o b\u00e1sico e explore as possibilidades mais a seguir. A leitura do livro C\u00f3digo-Limpo de Robert C. Martin far\u00e1 todo sentido quando resolver compr\u00e1-lo e l\u00ea-lo. E \u00e9 importante lembrar que o Delphi te d\u00e1 total condi\u00e7\u00e3o de executar todas as tarefas para tornar seu c\u00f3digo mais limpo. Uma delas \u00e9 o formatador autom\u00e1tico. <\/p>\n\n\n\n<p>H\u00e1 bastante tempo atr\u00e1s existia um plugin chamado Delphi Formatter que implementava a combina\u00e7\u00e3o de teclas Ctrl + D para formata\u00e7\u00e3o. Voc\u00ea configurava como gostaria que o c\u00f3digo fosse ajustado e pressionava Ctrl + D. N\u00e3o me recordo quando esse plugin foi incorporado ao Delphi, mas a verdade \u00e9 que muita gente n\u00e3o conhece seu poder. Preparei abaixo algumas dicas para entender melhor e personalizar seu Delphi.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/adrianosantos.link\/treinamentos\" target=\"_blank\" rel=\"noreferrer noopener\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"150\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1.png\" alt=\"\" class=\"wp-image-222\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1.png 800w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1-300x56.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1-768x144.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Acessando as Configura\u00e7\u00f5es de Formata\u00e7\u00e3o<\/h4>\n\n\n\n<p>Inicie acessando <em>Tools &gt; Options &gt; Language &gt; Formatter &gt; Delphi<\/em>. Voc\u00ea vai encontrar v\u00e1rias se\u00e7\u00f5es nessa op\u00e7\u00e3o, s\u00e3o elas que descrevemos adiante.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Configurando a Indenta\u00e7\u00e3o<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Indenta\u00e7\u00e3o Geral<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Continuation indent<\/strong>: Defina para <code>2<\/code>. Esta configura\u00e7\u00e3o adiciona uma indenta\u00e7\u00e3o adicional para linhas de continua\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Indent blocks between Begin and End<\/strong>: Defina para <code>True<\/code>. Isso garante que os blocos de c\u00f3digo entre <code>Begin<\/code> e <code>End<\/code> sejam corretamente indentados.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Indenta\u00e7\u00e3o em Declara\u00e7\u00f5es de Case<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Indent case contents<\/strong>: Defina para <code>True<\/code>. Isso garante que o conte\u00fado dos casos em uma instru\u00e7\u00e3o <code>case<\/code> seja indentado.<\/li>\n\n\n\n<li><strong>Indent case labels<\/strong>: Defina para <code>True<\/code>. Isso aplica indenta\u00e7\u00e3o nas labels dos casos.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Indenta\u00e7\u00e3o de Labels<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Indent labels<\/strong>: Configure como <code>Decrease one indent<\/code>. Isso ajusta a indenta\u00e7\u00e3o de labels.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Configurando Espa\u00e7amentos<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Espa\u00e7amentos Gerais<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Set spacing around colons<\/strong>: Configure como <code>After only<\/code>. Define o espa\u00e7amento ao redor dos dois pontos.<\/li>\n\n\n\n<li><strong>Set spacing around commas<\/strong>: Configure como <code>After only<\/code>. Define o espa\u00e7amento ao redor das v\u00edrgulas.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Espa\u00e7amento para Coment\u00e1rios<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Set spacing for \/\/ comments<\/strong>: Configure como <code>Before and after<\/code>. Isso assegura que haja espa\u00e7amento adequado antes e depois dos coment\u00e1rios.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Espa\u00e7amento para Operadores<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Set spacing around assignment operators<\/strong>: Configure como <code>Before and after<\/code>. Define o espa\u00e7amento ao redor dos operadores de atribui\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Configurando Quebras de Linha<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Inser\u00e7\u00e3o de Quebras de Linha<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Line break after Begin<\/strong>: Configure como <code>Yes<\/code>. Isso garante que haja uma quebra de linha ap\u00f3s o <code>Begin<\/code>.<\/li>\n\n\n\n<li><strong>Line break after Then<\/strong>: Configure como <code>True<\/code>. Isso assegura que haja uma quebra de linha ap\u00f3s o <code>Then<\/code>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Quebras de Linha em Fun\u00e7\u00f5es<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>New line for a function return type<\/strong>: Configure como <code>Yes<\/code>. Isso for\u00e7a uma nova linha para o tipo de retorno de uma fun\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>N\u00famero de Linhas Vazias<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Number of empty lines<\/strong>: Defina todas as ocorr\u00eancias como <code>1<\/code> ou <code>0<\/code>, conforme necess\u00e1rio para evitar excesso de linhas vazias.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Configurando Capitaliza\u00e7\u00e3o<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Capitaliza\u00e7\u00e3o Geral<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Capitalization of compiler directives<\/strong>: Configure como <code>UPPER CASE<\/code>. Isso padroniza as diretivas do compilador em mai\u00fasculas.<\/li>\n\n\n\n<li><strong>Capitalization of numbers<\/strong>: Configure como <code>UPPER CASE<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Configurando Alinhamento<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Casos de Alinhamento<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Align &#8216;:=&#8217; in constants<\/strong>: Configure como <code>True<\/code>. Isso alinha os operadores de atribui\u00e7\u00e3o em constantes.<\/li>\n\n\n\n<li><strong>Align &#8216;=&gt;&#8217; in type declarations<\/strong>: Configure como <code>True<\/code>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Alinhamento Geral<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Align &#8216;=&#8217; before type names<\/strong>: Configure como <code>False<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Salvando as Configura\u00e7\u00f5es<\/h4>\n\n\n\n<p>Depois de ajustar todas as configura\u00e7\u00f5es conforme necess\u00e1rio, clique em <code>Save<\/code> para aplicar as mudan\u00e7as. Essas configura\u00e7\u00f5es ajudar\u00e3o a garantir que seu c\u00f3digo siga as pr\u00e1ticas de formata\u00e7\u00e3o do c\u00f3digo-limpo, tornando-o mais leg\u00edvel e f\u00e1cil de manter.<\/p>\n\n\n\n<p>\u00c9 claro que abordei aqui somente as que julgo mais importantes, entretanto as janelas s\u00e3o bem completas e h\u00e1 muitas configura\u00e7\u00f5es interessantes a se fazer. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"659\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1024x659.png\" alt=\"\" class=\"wp-image-739\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1024x659.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-300x193.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-768x494.png 768w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image.png 1272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"657\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1-1024x657.png\" alt=\"\" class=\"wp-image-740\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1-1024x657.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1-300x192.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1-768x493.png 768w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-1.png 1272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"735\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-2-1024x735.png\" alt=\"\" class=\"wp-image-741\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-2-1024x735.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-2-300x215.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-2-768x551.png 768w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-2.png 1272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"730\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-3-1024x730.png\" alt=\"\" class=\"wp-image-742\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-3-1024x730.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-3-300x214.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-3-768x548.png 768w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-3.png 1272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"732\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-4-1024x732.png\" alt=\"\" class=\"wp-image-743\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-4-1024x732.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-4-300x214.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-4-768x549.png 768w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/07\/image-4.png 1272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Voc\u00ea sabia que o Delphi possui um guia de Estilo?<\/strong><\/p>\n\n\n\n<p>Para auxiliar os desenvolvedores a manterem um padr\u00e3o de codifica\u00e7\u00e3o claro e consistente, o Delphi oferece o &#8220;Delphi&#8217;s Object Pascal Style Guide&#8221;. Este guia \u00e9 uma refer\u00eancia essencial que cobre v\u00e1rias pr\u00e1ticas recomendadas, desde conven\u00e7\u00f5es de nomenclatura at\u00e9 regras de formata\u00e7\u00e3o de c\u00f3digo. Ele ajuda a garantir que o c\u00f3digo escrito por diferentes desenvolvedores seja uniforme, facilitando a leitura, a manuten\u00e7\u00e3o e a colabora\u00e7\u00e3o em projetos.<\/p>\n\n\n\n<p>O guia de estilo do Delphi aborda t\u00f3picos como indenta\u00e7\u00e3o, espa\u00e7amento, organiza\u00e7\u00e3o de c\u00f3digo e coment\u00e1rios. Ele fornece diretrizes detalhadas sobre como formatar seu c\u00f3digo para maximizar a legibilidade e minimizar erros. Seguir essas diretrizes n\u00e3o s\u00f3 melhora a qualidade do seu c\u00f3digo, mas tamb\u00e9m demonstra um compromisso com as melhores pr\u00e1ticas de desenvolvimento. Para acessar o guia completo, visite <a href=\"https:\/\/docwiki.embarcadero.com\/RADStudio\/Sydney\/en\/Delphi%E2%80%99s_Object_Pascal_Style_Guide\">Delphi&#8217;s Object Pascal Style Guide<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conclus\u00e3o<\/h3>\n\n\n\n<p>A formata\u00e7\u00e3o consistente \u00e9 fundamental para manter o c\u00f3digo limpo, leg\u00edvel e f\u00e1cil de manter. Estabelecer e seguir conven\u00e7\u00f5es de formata\u00e7\u00e3o, como indenta\u00e7\u00e3o, espa\u00e7amento e organiza\u00e7\u00e3o do c\u00f3digo, melhora significativamente a legibilidade e a manuten\u00e7\u00e3o do software. Utilizar ferramentas de formata\u00e7\u00e3o autom\u00e1ticas no Delphi e seguir guias de estilo, como o &#8220;Delphi&#8217;s Object Pascal Style Guide&#8221;, assegura que todos os desenvolvedores na equipe adotem pr\u00e1ticas uniformes, promovendo um ambiente de desenvolvimento mais eficiente e colaborativo. Ao investir na formata\u00e7\u00e3o consistente, garantimos um c\u00f3digo de alta qualidade e um desenvolvimento mais \u00e1gil e produtivo.<\/p>\n\n\n\n<p>Comunidade no <a href=\"https:\/\/t.me\/AdrianoSantosCommunity\">Telegram<\/a><\/p>\n\n\n\n<p>\ud83d\ude80Comente no campo abaixo \ud83d\udc47\ud83d\udc47\ud83d\udc47 o que achou e qual sua d\u00favida.<\/p>\n\n\n\n<p>Te vejo na pr\u00f3xima<\/p>\n\n\n\n<p>Adriano Santos<\/p>\n\n\n\n<p><strong>Demais Artigos:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/adrianosantos.link\/ArtigoCodigoLimpo-NomesSignificativos\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 1: Nomes Significativos<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoCodigoLimpoFuncoesPequenas\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 2: Fun\u00e7\u00f5es Pequenas<\/a><br><a href=\"https:\/\/adrianosantos.link\/CodigoLimpoParte3-ComentariosEficientes\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 3: Coment\u00e1rios Eficientes<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoFormatacaoConsistente\" target=\"_blank\" rel=\"noreferrer noopener\">Parrte 4: Formata\u00e7\u00e3o Consistente<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoCodigoLimpoTratamentoDeErros\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 5: Tratamento de Erros<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoCodigoLimpoEstruturaDeClasses\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 6: Estrutura de Classes<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoTestesAutomatizados\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 7: Testes Automatizados<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoRefatocaoContinua\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 8: Refatora\u00e7\u00e3o Cont\u00ednua<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoCodigoSimplesDireto\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 9: C\u00f3digo Simples e Direto<\/a><br><a href=\"https:\/\/adrianosantos.link\/ArtigoCodigoLimpoSolid\" target=\"_blank\" rel=\"noreferrer noopener\">Parte 10: SOLID<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A formata\u00e7\u00e3o consistente \u00e9 um dos aspectos mais fundamentais do c\u00f3digo-limpo e, embora possa parecer uma quest\u00e3o puramente est\u00e9tica, seu impacto na legibilidade, na manutenibilidade e na colabora\u00e7\u00e3o dentro de um projeto de software \u00e9 profundo. Quando o c\u00f3digo \u00e9 formatado de maneira uniforme, ele se torna mais f\u00e1cil de ler e compreender, independentemente de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":745,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-733","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=733"}],"version-history":[{"count":10,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/733\/revisions"}],"predecessor-version":[{"id":817,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/733\/revisions\/817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/745"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}