{"id":59,"date":"2022-03-16T23:45:10","date_gmt":"2022-03-16T23:45:10","guid":{"rendered":"https:\/\/codefornoobs.pt\/?p=59"},"modified":"2025-07-02T21:57:31","modified_gmt":"2025-07-02T21:57:31","slug":"comentarios-podem-ser-maus","status":"publish","type":"post","link":"https:\/\/codefornoobs.pt\/?p=59","title":{"rendered":"Coment\u00e1rios s\u00e3o nocivos para todos"},"content":{"rendered":"\n<p>Coment\u00e1rios podem ser umas das piores coisas a encontrar no c\u00f3digo, e nunca devem de ser usados. Bem, n\u00e3o \u00e9 bem nunca, at\u00e9 h\u00e1 situa\u00e7\u00f5es em que um coment\u00e1rio no sitio certo, pode ser uma excelente ajuda, mas regra geral fazem mais mal do que bem.<\/p>\n\n\n\n<p>Existem alguns motivos pelo qual eu n\u00e3o gosto de coment\u00e1rios no c\u00f3digo. Uma das raz\u00f5es \u00e9 que acabam por ser mais &#8220;linhas de c\u00f3digo&#8221; para navegar. N\u00e3o digo isto porque acho que bom c\u00f3digo \u00e9 escrever o menor n\u00famero de linhas, mas esta discuss\u00e3o fica para outro post ;). Por exemplo, se tivermos uma classe com 4 ou 5 m\u00e9todos e cada m\u00e9todos tiver umas 5 linhas de coment\u00e1rios temos logo mais, 20 linhas para andar a fazer scroll para cima e para baixo. N\u00e3o \u00e9 a raz\u00e3o principal, mas admito que \u00e9 uma coisa que me incomoda um pouco. Para mim a principal raz\u00e3o \u00e9 que \u00e9 mais uma linha de c\u00f3digo para manter. Vamos imaginar que temos a seguinte fun\u00e7\u00e3o que devolve sempre o primeiro elemento de uma lista de inteiros.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"629\" data-id=\"63\" src=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-1024x629.png\" alt=\"\" class=\"wp-image-63\" srcset=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-1024x629.png 1024w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-300x184.png 300w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-768x472.png 768w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-1536x944.png 1536w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-600x369.png 600w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53-945x581.png 945w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.31.53.png 1728w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Agora vamos imaginar que h\u00e1 uma mudan\u00e7a de requisitos no nosso programa e no lugar de devolver o primeiro deve devolver o segundo elemento de uma lista. Acontece que o c\u00f3digo \u00e9 alterado, mas por alguma raz\u00e3o esquece de alterar tamb\u00e9m o coment\u00e1rio. Agora temos uma fun\u00e7\u00e3o que devolve o segundo elemento, mas o coment\u00e1rio induz em erro pensando que devolve o primeiro elemento. Tens raz\u00e3o, podemos contra argumentar que \u00e9 s\u00f3 mais uma linhas e que n\u00e3o esquece, mas no dia a dia existem sempre v\u00e1rias distra\u00e7\u00f5es quer queiramos quer n\u00e3o e o mais prov\u00e1vel \u00e9 que isso v\u00e1 acontecer eventualmente em algum momento.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"709\" src=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-1024x709.png\" alt=\"\" class=\"wp-image-65\" srcset=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-1024x709.png 1024w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-300x208.png 300w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-768x532.png 768w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-1536x1064.png 1536w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-600x416.png 600w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37-945x655.png 945w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.39.37.png 1816w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Outra raz\u00e3o raz\u00e3o \u00e9 que nos torna pregui\u00e7osos a nomear as fun\u00e7\u00f5es e vari\u00e1veis. O nome GetElement(&#8230;) para uma fun\u00e7\u00e3o n\u00e3o \u00e9 muito explicito, poderia ser melhorado. Se chamassemos de GetSecondElementFromList(&#8230;) n\u00e3o seria preciso nenhum coment\u00e1rio. Acredito que \u00e9 sempre ben\u00e9fico perder mais uns segundos a dar um bom nome a uma fun\u00e7\u00e3o do que inserir um coment\u00e1rio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"668\" src=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-22.47.39-1024x668.png\" alt=\"\" class=\"wp-image-66\"\/><\/figure>\n\n\n\n<p>Quando escrevo c\u00f3digo a minha abordagem \u00e9 nunca utilizar coment\u00e1rios, mas existem algumas raras excep\u00e7\u00f5es em que um coment\u00e1rio pode dar muito jeito. Na minha opini\u00e3o os coment\u00e1rios n\u00e3o devem de descrever o que a fun\u00e7\u00e3o faz, pode no m\u00e1ximo descrever o porqu\u00ea da implementa\u00e7\u00e3o. Um bom exemplo seria o coment\u00e1rio que se segue. Neste caso, apesar de n\u00e3o utilizar o melhor m\u00e9todo para ordenar a lista, a n\u00edvel de performance n\u00e3o \u00e9 critico. Isto previne que algu\u00e9m perca muito tempo a tentar optimizar algo desnecess\u00e1rio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"557\" src=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-1024x557.png\" alt=\"\" class=\"wp-image-67\" srcset=\"https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-1024x557.png 1024w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-300x163.png 300w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-768x418.png 768w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-1536x835.png 1536w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-600x326.png 600w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15-945x514.png 945w, https:\/\/codefornoobs.pt\/wp-content\/uploads\/2022\/01\/Screenshot-2021-02-22-at-23.30.15.png 1788w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Outra situa\u00e7\u00e3o que por vezes gosto de usar os coment\u00e1rios \u00e9 para adicionar TODOs de coisas que s\u00e3o necess\u00e1rias fazer, mas que n\u00e3o s\u00e3o o foco no momento. Por exemplo a navegar pelo c\u00f3digo encontro um m\u00e9todo que pode ser melhorado, adiciona o TODO e continuo aquilo que estava a fazer. No fim posso voltar ao TODO e fazer o refactor do m\u00e9todo.<\/p>\n\n\n\n<p>Regra geral considero que os coment\u00e1rios s\u00e3o maus, torna-nos pregui\u00e7osos porque muitas das vezes podemos renomear as coisas e deixam de ser necess\u00e1rios coment\u00e1rios. Acabam por criar ru\u00eddo no c\u00f3digo quando temos um code base muito grande e s\u00e3o mais uma coisa a manter al\u00e9m do pr\u00f3prio c\u00f3digo. Contudo existem algumas situa\u00e7\u00f5es em que podemos utilizar coment\u00e1rios para explicar o porqu\u00ea de adoptar uma solu\u00e7\u00e3o no lugar de outra.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coment\u00e1rios podem ser umas das piores coisas a encontrar no c\u00f3digo, e nunca devem de ser usados. Bem, n\u00e3o \u00e9 bem nunca, at\u00e9 h\u00e1 situa\u00e7\u00f5es em que um coment\u00e1rio no sitio certo, pode ser uma excelente ajuda, mas regra geral fazem mais mal do que bem.<\/p>\n","protected":false},"author":2,"featured_media":63,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[12],"tags":[7,6,9,10,4,8,5,11],"class_list":["post-59","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-melhorar-codigo","tag-net","tag-c","tag-codigo","tag-codigo-2","tag-comentario","tag-dotnet","tag-nocivo","tag-programacao"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/posts\/59","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=59"}],"version-history":[{"count":11,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/posts\/59\/revisions"}],"predecessor-version":[{"id":158,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/posts\/59\/revisions\/158"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=\/wp\/v2\/media\/63"}],"wp:attachment":[{"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=59"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=59"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codefornoobs.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=59"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}