{"id":708,"date":"2024-06-17T11:09:24","date_gmt":"2024-06-17T14:09:24","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?p=708"},"modified":"2024-08-19T13:43:00","modified_gmt":"2024-08-19T16:43:00","slug":"nomes-significativos-a-base-do-codigo-limpo","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/nomes-significativos-a-base-do-codigo-limpo\/","title":{"rendered":"C\u00f3digo-Limpo Parte 1: Nomes Significativos &#8211; A base do c\u00f3digo-limpo"},"content":{"rendered":"\n<p>No desenvolvimento de software, a clareza e a legibilidade do c\u00f3digo s\u00e3o essenciais para garantir que ele seja f\u00e1cil de entender, manter e evoluir. Um c\u00f3digo de qualidade n\u00e3o \u00e9 apenas aquele que funciona, mas tamb\u00e9m aquele que pode ser facilmente lido e compreendido por outros desenvolvedores, independentemente de sua familiaridade com o projeto. Entre os muitos princ\u00edpios que contribuem para a cria\u00e7\u00e3o de um c\u00f3digo-limpo, a escolha de nomes significativos para vari\u00e1veis, fun\u00e7\u00f5es, m\u00e9todos, classes e units \u00e9 um dos mais fundamentais.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Nomes significativos s\u00e3o aqueles que comunicam claramente a inten\u00e7\u00e3o do c\u00f3digo. Eles tornam o c\u00f3digo autoexplicativo, reduzindo a necessidade de coment\u00e1rios adicionais e facilitando a navega\u00e7\u00e3o e a modifica\u00e7\u00e3o. Em um ambiente de desenvolvimento onde v\u00e1rias pessoas colaboram no mesmo projeto, a utiliza\u00e7\u00e3o de nomes claros e descritivos pode fazer a diferen\u00e7a entre um c\u00f3digo que \u00e9 f\u00e1cil de trabalhar e um c\u00f3digo que \u00e9 um pesadelo de manuten\u00e7\u00e3o.<\/p>\n\n\n\n<p>Al\u00e9m disso, nomes significativos melhoram a produtividade dos desenvolvedores. Quando o c\u00f3digo \u00e9 f\u00e1cil de entender, os desenvolvedores passam menos tempo tentando decifrar o que ele faz e mais tempo implementando novas funcionalidades ou corrigindo bugs. Isso se traduz em entregas mais r\u00e1pidas e de maior qualidade.<\/p>\n\n\n\n<p>Neste artigo, exploraremos em profundidade a import\u00e2ncia dos <strong>nomes significativos<\/strong> no c\u00f3digo-limpo. Discutiremos por que \u00e9 crucial investir tempo e esfor\u00e7o na escolha de bons nomes e forneceremos exemplos pr\u00e1ticos em Delphi para ilustrar como aplicar esse princ\u00edpio de maneira eficaz.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Por que \u00e9 importante um c\u00f3digo-limpo?<\/h4>\n\n\n\n<p>C\u00f3digo-limpo \u00e9 um conceito que se refere a escrever c\u00f3digo que \u00e9 f\u00e1cil de ler, entender e modificar. As vantagens de manter um c\u00f3digo-limpo incluem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Legibilidade<\/strong>: C\u00f3digo f\u00e1cil de ler \u00e9 mais f\u00e1cil de entender. Isso \u00e9 crucial quando diferentes desenvolvedores trabalham no mesmo projeto.<\/li>\n\n\n\n<li><strong>Manuten\u00e7\u00e3o<\/strong>: C\u00f3digo claro reduz o tempo e esfor\u00e7o necess\u00e1rios para manuten\u00e7\u00e3o e refatora\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Colabora\u00e7\u00e3o<\/strong>: Facilita a colabora\u00e7\u00e3o entre desenvolvedores, pois todos podem rapidamente entender a l\u00f3gica e o fluxo do c\u00f3digo.<\/li>\n\n\n\n<li><strong>Redu\u00e7\u00e3o de Erros<\/strong>: C\u00f3digo claro e bem-estruturado \u00e9 menos propenso a erros, pois \u00e9 mais f\u00e1cil identificar e corrigir problemas.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Os principais pilares<\/h4>\n\n\n\n<p>Os principais pilares do c\u00f3digo-limpo s\u00e3o pr\u00e1ticas e princ\u00edpios que guiam os desenvolvedores na cria\u00e7\u00e3o de c\u00f3digo de alta qualidade. Cada pilar aborda um aspecto espec\u00edfico do desenvolvimento de software, contribuindo para a cria\u00e7\u00e3o de um sistema que \u00e9 f\u00e1cil de entender, manter e evoluir. Aqui est\u00e3o os principais pilares do c\u00f3digo-limpo:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Nomes Significativos<\/strong>: Usar nomes claros e descritivos para vari\u00e1veis, fun\u00e7\u00f5es, m\u00e9todos, classes e units. Nomes significativos comunicam a inten\u00e7\u00e3o do c\u00f3digo e facilitam a compreens\u00e3o e navega\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Fun\u00e7\u00f5es Pequenas e Focadas<\/strong>: Manter fun\u00e7\u00f5es pequenas e focadas em uma \u00fanica tarefa. Fun\u00e7\u00f5es menores s\u00e3o mais f\u00e1ceis de entender, testar e manter, al\u00e9m de promoverem a reutiliza\u00e7\u00e3o do c\u00f3digo.<\/li>\n\n\n\n<li><strong>Coment\u00e1rios Eficientes<\/strong>: Utilizar coment\u00e1rios para explicar o porqu\u00ea das decis\u00f5es de design e fornecer contexto adicional, em vez de explicar o que o c\u00f3digo faz. Coment\u00e1rios eficientes complementam o c\u00f3digo sem sobrecarreg\u00e1-lo.<\/li>\n\n\n\n<li><strong>Formata\u00e7\u00e3o Consistente<\/strong>: Manter uma formata\u00e7\u00e3o consistente no c\u00f3digo para melhorar a legibilidade e facilitar a colabora\u00e7\u00e3o. Isso inclui seguir conven\u00e7\u00f5es de indenta\u00e7\u00e3o, espa\u00e7amento e estilo de c\u00f3digo.<\/li>\n\n\n\n<li><strong>Tratamento Adequado de Erros<\/strong>: Implementar um tratamento de erros robusto e claro, utilizando exce\u00e7\u00f5es e fornecendo mensagens de erro informativas. Isso ajuda a garantir que o software se comporte de maneira previs\u00edvel em situa\u00e7\u00f5es de erro.<\/li>\n\n\n\n<li><strong>Estrutura Coesa e Baixo Acoplamento<\/strong>: Projetar classes e m\u00f3dulos com responsabilidades bem definidas e reduzir as depend\u00eancias entre eles. Isso torna o sistema mais modular, flex\u00edvel e f\u00e1cil de manter.<\/li>\n\n\n\n<li><strong>Testes Automatizados<\/strong>: Escrever testes automatizados para verificar o comportamento do c\u00f3digo e garantir que novas mudan\u00e7as n\u00e3o introduzam regress\u00f5es. Testes automatizados aumentam a confian\u00e7a no c\u00f3digo e facilitam a refatora\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Refatora\u00e7\u00e3o Cont\u00ednua<\/strong>: Realizar refatora\u00e7\u00f5es cont\u00ednuas para melhorar a clareza e a estrutura do c\u00f3digo sem alterar seu comportamento. A refatora\u00e7\u00e3o cont\u00ednua ajuda a manter a qualidade do c\u00f3digo ao longo do tempo.<\/li>\n\n\n\n<li><strong>C\u00f3digo Simples e Direto<\/strong>: Escrever c\u00f3digo que seja o mais simples e direto poss\u00edvel, evitando complexidade desnecess\u00e1ria. C\u00f3digo simples \u00e9 mais f\u00e1cil de entender e manter.<\/li>\n\n\n\n<li><strong>Princ\u00edpios SOLID<\/strong>: Aplicar os princ\u00edpios de design SOLID (Single Responsibility, Open\/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) para criar sistemas mais robustos e flex\u00edveis.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Primeiro pilar: Nomes Significativos<\/h4>\n\n\n\n<p>Nesse primeiro artigo da s\u00e9rie vamos abordar o pilar: <strong>Noms Significativos<\/strong>. Usar nomes significativos para vari\u00e1veis, fun\u00e7\u00f5es, m\u00e9todos, classes e units \u00e9 crucial para a legibilidade do c\u00f3digo. Nomes bem escolhidos transmitem claramente o prop\u00f3sito e a funcionalidade de cada elemento, tornando o c\u00f3digo autoexplicativo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Por que \u00e9 importante pensar antes de dar nomes \u00e0s coisas?<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Clareza de Inten\u00e7\u00e3o<\/strong>: Nomes claros comunicam a inten\u00e7\u00e3o do c\u00f3digo, facilitando a compreens\u00e3o imediata do que cada parte do c\u00f3digo faz.<\/li>\n\n\n\n<li><strong>Redu\u00e7\u00e3o de Coment\u00e1rios<\/strong>: Quando os nomes s\u00e3o significativos, a necessidade de coment\u00e1rios diminui, pois o c\u00f3digo se explica por si mesmo.<\/li>\n\n\n\n<li><strong>Facilidade de Navega\u00e7\u00e3o<\/strong>: Nomes bem escolhidos tornam mais f\u00e1cil navegar pelo c\u00f3digo e encontrar o que se precisa.<\/li>\n\n\n\n<li><strong>Manuten\u00e7\u00e3o Facilitada<\/strong>: Bons nomes facilitam a manuten\u00e7\u00e3o, pois qualquer desenvolvedor pode rapidamente entender e modificar o c\u00f3digo sem introduzir erros.<\/li>\n\n\n\n<li><strong>Consist\u00eancia<\/strong>: Pensar nos nomes ajuda a manter consist\u00eancia no projeto, o que \u00e9 essencial para a coes\u00e3o do c\u00f3digo.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">10 Exemplos para aprendermos<\/h4>\n\n\n\n<p>Pra ficar mais claro vamos criar exemplos e demonstrar como fica t\u00e3o mais f\u00e1cil quando nos preocupamos em criar nomes melhores em todas as situa\u00e7\u00f5es:<\/p>\n\n\n\n<p><strong>Vari\u00e1veis<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: Usar nomes de vari\u00e1veis como <code>x<\/code> \u00e9 confuso e n\u00e3o comunica a inten\u00e7\u00e3o da vari\u00e1vel.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">var\n  x: Integer;\nbegin\n  x := 10;\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois<\/strong>: Usar um nome descritivo como <code>idade<\/code> torna claro que a vari\u00e1vel representa a idade.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">var\n  idade: Integer;\nbegin\n  idade := 10;\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Fun\u00e7\u00f5es<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: Fun\u00e7\u00f5es com nomes gen\u00e9ricos como <code>Soma<\/code> n\u00e3o indicam claramente o que est\u00e1 sendo somado.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function Soma(a, b: Integer): Integer;\nbegin\n  Result := a + b;\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois<\/strong>: Um nome descritivo como <code>SomarDoisNumeros<\/code> deixa claro que a fun\u00e7\u00e3o soma dois n\u00fameros.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function SomarDoisNumeros(numero1, numero2: Integer): Integer;\nbegin\n  Result := numero1 + numero2;\nend;\n<\/pre><\/div>\n\n\n\n<p>Vamos imaginar algo mais pr\u00f3ximo da sua realidade. Imagine uma fun\u00e7\u00e3o que calcula impostos. Pense:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function CalcImpsFed(A, B, C: Double): Double;<\/pre><\/div>\n\n\n\n<p>N\u00e3o est\u00e1 claro que s\u00e3o impostos Federais que est\u00e3o sendo calculados, d\u00e1 pra dar um chute, l\u00f3gico, por\u00e9m pra ter certeza o que programador ter\u00e1 que abrir a fun\u00e7\u00e3o e analisar.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function CalcularImpostosFederais(A, B, C: Double): Double;<\/pre><\/div>\n\n\n\n<p>Agora fica muito mais claro que estamos calculando impostos federais no m\u00e9todo, portanto n\u00e3o precisamos abrir a fun\u00e7\u00e3o pra termos certeza. S\u00f3 os par\u00e2metros que est\u00e3o ruins, mas veremos isso ainda nesse artigo. <\/p>\n\n\n\n<p><strong>M\u00e9todos<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: M\u00e9todos com nomes gen\u00e9ricos como <code>BtnClick<\/code> n\u00e3o indicam a a\u00e7\u00e3o espec\u00edfica que \u00e9 realizada quando o bot\u00e3o \u00e9 clicado.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.BtnClick(Sender: TObject);\nbegin\n  \/\/ C\u00f3digo aqui\nend;\n<\/pre><\/div>\n\n\n\n<p><strong>Depois<\/strong>: Um nome descritivo como <code>ExibirMensagemDeBoasVindas<\/code> deixa claro o prop\u00f3sito do m\u00e9todo.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">procedure TForm1.ExibirMensagemDeBoasVindas(Sender: TObject);\nbegin\n  ShowMessage('Bem-vindo!');\nend;\n<\/pre><\/div>\n\n\n\n<p>Nesse caso em espec\u00edfico, ao inv\u00e9s de codificarmos diretamente no OnClick do bot\u00e3o, transferimos a responsabilidade para uma procedure e colocamos um nome mais amig\u00e1vel, ent\u00e3o chamar\u00edamos esse novo m\u00e9todo atrav\u00e9s do bot\u00e3o.<\/p>\n\n\n\n<p><strong>Classes<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: Nomes de classes gen\u00e9ricos como <code>TCalc<\/code> n\u00e3o indicam a responsabilidade da classe.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">type\n  TCalc = class\n  end;\n<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Depois<\/strong>: Um nome descritivo como <code>TCalculadora<\/code> indica claramente que a classe \u00e9 respons\u00e1vel por c\u00e1lculos.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">type\n  TCalculadora = class\n  public\n    function Somar(a, b: Integer): Integer;\n  end;\n<\/pre><\/div>\n\n\n\n<p><strong>Units<\/strong><\/p>\n\n\n\n<p>No caso de Units do sistema, voc\u00ea muito provavelmente utiliza-se de nomes curtos em seus software ou ainda nomes singulares, tais como: <code>uCalc, uImpostos, uNotaFiscal<\/code>. N\u00e3o s\u00e3o totalmente ruins, mas podemos melhorar isso ainda mais. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: Usar nomes de units gen\u00e9ricos como <code>uCalc<\/code> n\u00e3o fornece nenhuma informa\u00e7\u00e3o sobre o conte\u00fado ou a responsabilidade da unit.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">unit Unit1;\n<\/pre><\/div>\n\n\n\n<p>Uma boa alternativa \u00e9 organizar seus projetos em pastas e ent\u00e3o gravar as units nas respectivas pastas com namespaces relacionados. Namespaces s\u00e3o interessantes pois facilmente conseguimos identificar que tipo de arquivo estamos lidando, imagine os nomes abaixo:<\/p>\n\n\n\n<p><code>uViewCalcImposto.pas<\/code><br><code>uCalcImposto.pas<\/code><\/p>\n\n\n\n<p>S\u00f3 conseguimos saber que a primeira Unit \u00e9 de um form onde vamos calcular os impostos devido ao nome &#8220;View&#8221; que compoe o nome. Agora imagine que cada um dessas units esteja salva em uma pasta diferente, assim: A unit &#8220;uViewCacImposto&#8221; est\u00e1 salva em <strong>Views<\/strong> e &#8220;uCalcImposto.pas&#8221; esteja salva na pasta <strong>Bibliotecas<\/strong>. E imagine tamb\u00e9m que nosso projeto chama-se &#8220;SuperCalc.exe&#8221;. <\/p>\n\n\n\n<p>Poder\u00edamos melhorar isso dandos os seguintes nomes \u00e0s units:<\/p>\n\n\n\n<p><code>SuperCalc.Views.ViewCacImposto.pas<br>SuperCalc.Bibliotecas.CalcImposto.pas<\/code><\/p>\n\n\n\n<p>Isso j\u00e1 melhora significativamente o entendimento. Mas ainda podemos melhorar. Os nomes poderiam sem mais autoexplicativos ainda.<\/p>\n\n\n\n<p><code>SuperCalc.Views.ViewCaculaImpostos.Federais.pas<br>SuperCalc.Bibliotecas.CalculaImpostos.Federais.pas<\/code><\/p>\n\n\n\n<p> Pronto! Sei que voc\u00ea vai me diser: <em>&#8220;Puxa, est\u00e3o longos os nomes&#8221;<\/em>. Melhor longos do que &#8220;n\u00e3o autoexplicativos&#8221;. Dessa forma conseguirmos saber que tanto a unit do form quanto a bibliteca referem-se a c\u00e1culos de impostos federais. Se mais tarce precisamos de impostos estaduais, j\u00e1 imagina como faremos correto?<\/p>\n\n\n\n<p><strong>Constantes<\/strong><\/p>\n\n\n\n<p>Nomes de constantes s\u00e3o os que a maioria dos desenvolvedores mais pecam. Creio que voc\u00ea n\u00e3o seja radical a ponto de usar uma \u00fanica letra como o exemplo abaixo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: Usar nomes de constantes gen\u00e9ricos como <code>C<\/code> pode ser confuso e n\u00e3o indica o que a constante representa.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">const\n  C = 3.1415;\n<\/pre><\/div>\n\n\n\n<p>Mas talvez use algo como <strong>CalcImps<\/strong>, <strong>ImpFedederais<\/strong> ou semelhante. Se esse \u00e9 seu caso, procure melhorar esses nomes e torn\u00e1-los mais leg\u00edveis.<\/p>\n\n\n\n<p><strong>Depois<\/strong>: Um nome descritivo como <code>C_AliquotaFederal<\/code> ou <code>C_AliquotaEstadual<\/code> (se fizer sentido) deixa claro que as constantes representam os valores de impostos federais e estaduais, respectivamente.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">const\n  C_AliquotaFederal = 7,\n  C_AliquotaEstadual = 10;\n<\/pre><\/div>\n\n\n\n<p>Percebe como fica mais claro?<\/p>\n\n\n\n<p><strong>Par\u00e2metros de Fun\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p>Crucial essa parte. Primeiro, evite muitos par\u00e2metros, mas vamos falar disso mais adiante em outro momento. Se precisar de par\u00e2metros d\u00ea nomes significativos pra eles tamb\u00e9m. Criar par\u00e2metros como abaixo, n\u00e3o \u00e9 uma boa pr\u00e1tica.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antes<\/strong>: Nomes de par\u00e2metros gen\u00e9ricos como <code>x<\/code> e <code>y<\/code> n\u00e3o indicam claramente o que os par\u00e2metros representam.<\/li>\n<\/ul>\n\n\n\n<p>O que \u00e9 <strong>x<\/strong> e o que \u00e9 <strong>y<\/strong>? Isso vai for\u00e7ar o desenvolvedor a olhar o c\u00f3digo da fun\u00e7\u00e3o pra decifrar o que s\u00e3o.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-medium-font-size\"><strong>Par\u00e2metros de Fun\u00e7\u00f5e<\/strong>s<\/p>\n\n\n\n<p>A quantidade ideal de par\u00e2metros para uma fun\u00e7\u00e3o \u00e9 zero (nulo). Depois vem (m\u00f4nade), seguido de (d\u00edade). Sempre que poss\u00edvel devem-se evitar tr\u00eas par\u00e2metros (tr\u00edade). Para mais de tr\u00eas par\u00e2metros deve-se ter um motivo muito especial (pol\u00edade) &#8211; mesmo assim n\u00e3o devem ser usados.<\/p>\n<cite>Fonte: C\u00f3digo-Limpo de Robert C. Martin.<\/cite><\/blockquote>\n\n\n\n<p>Como p\u00f4de perceber na cita\u00e7\u00e3o do livro C\u00f3digo-Limpo, deve-se evitar par\u00e2metros, mas j\u00e1 que precisamos, ent\u00e3o vamos dar nomes melhores.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function (A, B: Double): Double;<\/pre><\/div>\n\n\n\n<p>Imagine que a fun\u00e7\u00e3o acima \u00e9 o c\u00e1lculo de comiss\u00e3o de vendedores. N\u00e3o d\u00e1 pra saber qual \u00e9 o valor da venda e qual o percentual de comiss\u00e3o. Ah, t\u00e1. Voc\u00ea n\u00e3o faz assim, \u00e9 justo. Talvez fa\u00e7a assim:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function (VlrVnd, PercentComiss: Double): Double;\nbegin\n  \/\/\nend;<\/pre><\/div>\n\n\n\n<p>D\u00e1 pra melhlorar. Que tal fazermos assim:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \">function (AValorVenda, APercentualComissao: Double): Double;\nbegin\n  \/\/\nend;<\/pre><\/div>\n\n\n\n<p>Muito melhor n\u00e3o. Agora sabemos que o primeiro par\u00e2metro \u00e9 o valor da venda e o segundo o percentual de comiss\u00e3o. Pergunta: E esse <strong>&#8220;A&#8221;<\/strong> na frente, de onde vem?<\/p>\n\n\n\n<p><strong><em>A = Argument<\/em><\/strong><\/p>\n\n\n\n<p>\u00c9 uma conven\u00e7\u00e3o do Delphi, n\u00e3o \u00e9 obrigat\u00f3rio, por\u00e9m totalmente v\u00e1lido. Voc\u00ea deve usar, muito provavelmente, o <strong>&#8220;v&#8221;<\/strong> ou ou o tipo de par\u00e2metro na frentre: <strong>&#8220;s&#8221;<\/strong> para String, <strong>&#8220;i&#8221;<\/strong> para Inteiro, etc. N\u00e3o use, use o <strong>A<\/strong>. <\/p>\n\n\n\n<p>E talvez esteja pensando: <em>Puxa, mas isso \u00e9 simples demais, n\u00e3o acho que atrapalha tanto assim.<\/em> Pois \u00e9, \u00e9 o que a maioria dos devs acredita, entretanto perder alguns minutos na hora de entender um c\u00f3digo-fonte antes de iniciar uma nova implementa\u00e7\u00e3o, ao final do dia\/m\u00eas, d\u00e1 uma grande diferen\u00e7a. Portanto, atente-se aos detalhes.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Conclus\u00e3o<\/strong><\/p>\n\n\n\n<p>Usar nomes significativos no c\u00f3digo \u00e9 um dos pilares fundamentais do c\u00f3digo-limpo e um passo essencial para criar software de alta qualidade. Nomes bem escolhidos melhoram significativamente a legibilidade, facilitam a manuten\u00e7\u00e3o e a navega\u00e7\u00e3o pelo c\u00f3digo, e reduzem a necessidade de coment\u00e1rios adicionais. Cada desenvolvedor que trabalha em um projeto se beneficia de nomes claros e descritivos, pois eles comunicam a inten\u00e7\u00e3o do c\u00f3digo de forma direta e eficaz.<\/p>\n\n\n\n<p>Investir tempo para pensar cuidadosamente nos nomes de vari\u00e1veis, fun\u00e7\u00f5es, m\u00e9todos, classes e units resulta em um c\u00f3digo mais coeso e autoexplicativo. Isso n\u00e3o s\u00f3 torna o desenvolvimento mais eficiente, mas tamb\u00e9m melhora a colabora\u00e7\u00e3o entre os membros da equipe, que podem facilmente entender e modificar o c\u00f3digo sem introduzir novos erros.<\/p>\n\n\n\n<p>Nomes significativos tamb\u00e9m ajudam a manter a consist\u00eancia em um projeto, o que \u00e9 crucial para a coes\u00e3o do c\u00f3digo. Essa pr\u00e1tica deve ser adotada desde o in\u00edcio do desenvolvimento e mantida ao longo de todo o ciclo de vida do software, contribuindo para a cria\u00e7\u00e3o de sistemas mais robustos e sustent\u00e1veis.<\/p>\n\n\n\n<p>Em suma, nomes significativos s\u00e3o a base sobre a qual outros princ\u00edpios de c\u00f3digo-limpo podem ser constru\u00eddos. No pr\u00f3ximo artigo, exploraremos o segundo pilar do c\u00f3digo-limpo: <strong>Fun\u00e7\u00f5es Pequenas e Focadas<\/strong>, e como elas podem contribuir ainda mais para a qualidade do seu c\u00f3digo.<\/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","protected":false},"excerpt":{"rendered":"<p>No desenvolvimento de software, a clareza e a legibilidade do c\u00f3digo s\u00e3o essenciais para garantir que ele seja f\u00e1cil de entender, manter e evoluir. Um c\u00f3digo de qualidade n\u00e3o \u00e9 apenas aquele que funciona, mas tamb\u00e9m aquele que pode ser facilmente lido e compreendido por outros desenvolvedores, independentemente de sua familiaridade com o projeto. Entre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":719,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-708","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\/708","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=708"}],"version-history":[{"count":12,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/708\/revisions"}],"predecessor-version":[{"id":819,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/708\/revisions\/819"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/719"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}