{"id":96,"date":"2017-08-17T21:19:43","date_gmt":"2017-08-18T00:19:43","guid":{"rendered":"http:\/\/liag.ft.unicamp.br\/programacao2\/?page_id=96"},"modified":"2017-08-17T22:03:22","modified_gmt":"2017-08-18T01:03:22","slug":"boas-praticas-de-programacao","status":"publish","type":"page","link":"https:\/\/liag.ft.unicamp.br\/programacao2\/boas-praticas-de-programacao\/","title":{"rendered":"Boas Pr\u00e1ticas de Programa\u00e7\u00e3o"},"content":{"rendered":"<ol>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a563fd0\"  tabindex=\"0\" title=\"&lt;em&gt;Comente Adequadamente&lt;\/em&gt;\"    ><em>Comente Adequadamente<\/em><\/span><div id=\"target-id69d3b7a563fd0\" class=\"collapseomatic_content \"> No Inicio de cada arquivo deve ter seu nome, uma descri\u00e7\u00e3o do que o arquivo cont\u00e9m, quem o criou e em qual data.<\/strong><br \/>\n<strong> Antes de cada rotina, deve ser explicado o que ela faz, o que ela retorna e qual o comportamento das vari\u00e1veis. Use como premissa que algu\u00e9m consegue definir se ir\u00e1 ou n\u00e3o usar a rotina e poder\u00e1 us\u00e1-la apenas lendo o coment\u00e1rio, sem precisar conhecer o c\u00f3digo.<\/strong><br \/>\n<strong> O uso de linhas com * ou algum outro caracter ajuda a facilitar a identifica\u00e7\u00e3o das rotinas no meio do c\u00f3digo.<\/strong><br \/>\n<strong> Se a rotina ficar grande, \u00e9 importante explicar na cria\u00e7\u00e3o das vari\u00e1veis o que elas fazem.<\/strong><br \/>\n<strong> Comente cada grande parte do c\u00f3digo. Por exemplo, quando o programa entra em um if e quando entra em um else.<\/strong><br \/>\n<strong> mas n\u00e3o precisa comentar coisas obvias como explicar que o &#8220;contador++&#8221; est\u00e1 incrementando o &#8220;contador&#8221;<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a564107\"  tabindex=\"0\" title=\"&lt;em&gt;D\u00ea nomes claros \u00e1s vari\u00e1veis&lt;\/em&gt;\"    ><em>D\u00ea nomes claros \u00e1s vari\u00e1veis<\/em><\/span><div id=\"target-id69d3b7a564107\" class=\"collapseomatic_content \">Uma vari\u00e1vel n\u00e3o precisa ter nome e sobrenome, mas n\u00e3o deve ser chamada apenas por uma letra. Seu nome deve ter um significado l\u00f3gico, de forma que algu\u00e9m apenas lendo o nome consiga imaginar o que deve ser armazenado na vari\u00e1vel.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a56417c\"  tabindex=\"0\" title=\"&lt;em&gt;Declara\u00e7\u00e3o e inicializa\u00e7\u00e3o de vari\u00e1veis separadas da l\u00f3gica&lt;\/em&gt;\"    ><em>Declara\u00e7\u00e3o e inicializa\u00e7\u00e3o de vari\u00e1veis separadas da l\u00f3gica<\/em><\/span><div id=\"target-id69d3b7a56417c\" class=\"collapseomatic_content \">Tenha como pr\u00e1tica declarar todas as vari\u00e1veis que um programa ir\u00e1 utilizar logo ap\u00f3s o titulo da rotina. Desta forma fica muito mais simples para quem ir\u00e1 fazer a manuten\u00e7\u00e3o do c\u00f3digo entend\u00ea-lo. Depois das declara\u00e7\u00f5es e antes da l\u00f3gica as vari\u00e1veis devem ser inicializadas. N\u00e3o fa\u00e7a as coisas todas juntas, pois o c\u00f3digo perde em clareza.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a5641d4\"  tabindex=\"0\" title=\"&lt;em&gt;Use comandos claros e usualmente conhecidos&lt;\/em&gt;\"    ><em>Use comandos claros e usualmente conhecidos<\/em><\/span><div id=\"target-id69d3b7a5641d4\" class=\"collapseomatic_content \">C tem um monte de comandos esdr\u00faxulos e\/ou ex\u00f3ticos. Legal que voc\u00ea os descubra como hobby. Mas us\u00e1-los n\u00e3o faz o menor sentido, salvo quando n\u00e3o haja um comando tradicional que fa\u00e7a o mesmo. lembre-se que seu programa poder\u00e1 ter que ser corrigido por algu\u00e9m que nunca programou em C at\u00e9 o momento e nem tem a obriga\u00e7\u00e3o de conhecer todos os detalhes da linguagem.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a564221\"  tabindex=\"0\" title=\"&lt;em&gt;Idente&lt;\/em&gt;\"    ><em>Idente<\/em><\/span><div id=\"target-id69d3b7a564221\" class=\"collapseomatic_content \"> \u00c9 algo simples e que facilita incrivelmente tanto a constru\u00e7\u00e3o de um programa como sua manuten\u00e7\u00e3o. Use, se poss\u00edvel, o pr\u00f3prio tab ao inv\u00e9s de espa\u00e7o, para que seja f\u00e1cil manter todas as linhas iniciando-se na mesma coluna. Deixe os { e } sempre em linhas independentes, para que seja f\u00e1cil identificar-se tudo que est\u00e1 entre os dois.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a564269\"  tabindex=\"0\" title=\"&lt;em&gt;N\u00e3o Economize { }&lt;\/em&gt;\"    ><em>N\u00e3o Economize { }<\/em><\/span><div id=\"target-id69d3b7a564269\" class=\"collapseomatic_content \">Mesmo que seja apenas um comando, \u00e9 uma boa pr\u00e1tica colocar { }. Muitas vezes, em um momento de nervosismo, quando por exemplo um cliente est\u00e1 com a f\u00e1brica parada por um erro no c\u00f3digo, as pessoas incluem um comando a mais em um else, por exemplo, e se esquecem de checar se tem os { e } correspondentes. Se n\u00e3o houver, o comando ficar\u00e1 em lugar errado e o erro continuar\u00e1 ocorrendo.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a5642af\"  tabindex=\"0\" title=\"&lt;em&gt;Programe estruturadamente&lt;\/em&gt;\"    ><em>Programe estruturadamente<\/em><\/span><div id=\"target-id69d3b7a5642af\" class=\"collapseomatic_content \">C n\u00e3o \u00e9, per se, uma linguaguem estruturada. Quem faz ela estruturada \u00e9 quem programa. Assim, n\u00e3o use em hip\u00f3tese alguma:<\/strong><br \/>\n<strong> &#8211; goto e labels;<\/strong><br \/>\n<strong> &#8211; returns no meio de rotinas. cada rotina deve ter apenas um unico return, em sua ultima linha.<\/strong><br \/>\n<strong> &#8211; breaks no meio de loops. deve-se sair de um loop apenas com base nas regras l\u00f3gicas do loop.<\/strong><br \/>\n<strong> N\u00e3o devem existir tamb\u00e9m segmentos de c\u00f3digo iguais em varias partes do programa. Se isso acontecer, avalie como criar uma rotina e cham\u00e1-la nessas v\u00e1rias posi\u00e7\u00f5es do c\u00f3digo.<\/strong><br \/>\n<strong> Tamb\u00e9m deve ser evitado ao m\u00e1ximo o uso de vari\u00e1veis globais.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a5642f4\"  tabindex=\"0\" title=\"&lt;em&gt;Divida as rotinas de forma adequada&lt;\/em&gt;\"    ><em>Divida as rotinas de forma adequada<\/em><\/span><div id=\"target-id69d3b7a5642f4\" class=\"collapseomatic_content \">Uma rotina que n\u00e3o cabe em uma tela n\u00e3o \u00e9 uma rotina interessante. L\u00f3gico que em certos casos n\u00e3o ter-se-\u00e1 como fazer diferente. Mas o ideal \u00e9 sempre buscar-se construir rotinas pequenas<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a564337\"  tabindex=\"0\" title=\"&lt;em&gt;Use tipagem forte logicamente&lt;\/em&gt;\"    ><em>Use tipagem forte logicamente<\/em><\/span><div id=\"target-id69d3b7a564337\" class=\"collapseomatic_content \">C \u00e9 uma linguagem fracamente tipada. Ou seja, ele n\u00e3o checa se voc\u00ea est\u00e1 usando corretamente os tipos da linguagem. Voc\u00ea pode inserir um caractere em uma vari\u00e1vel num\u00e9rica, por exemplo. Pode, mas n\u00e3o deve! (salvo em rar\u00edssimas exce\u00e7\u00f5es \u00a0onde isso precisar\u00e1 ser feito).<\/strong><br \/>\n<strong> Tome o cuidado de usar vari\u00e1veis do tipo correspondente ao seu uso.<\/div><\/strong><\/li>\n<li><strong><span class=\"collapseomatic \" id=\"id69d3b7a56437a\"  tabindex=\"0\" title=\"&lt;em&gt;Programe para outros e n\u00e3o para voc\u00ea&lt;\/em&gt;\"    ><em>Programe para outros e n\u00e3o para voc\u00ea<\/em><\/span><div id=\"target-id69d3b7a56437a\" class=\"collapseomatic_content \">Lembre-se que na vida real n\u00e3o ser\u00e1 voc\u00ea que ir\u00e1 corrigir o seu programa. Assim, voc\u00ea deve sempre programar de forma simples e clara, de forma que qualquer pessoa que precise altera-lo o fa\u00e7a facilmente.<\/strong><br \/>\n<strong> Se voc\u00ea pensar que um programa confuso pode garantir seu emprego,<\/strong><br \/>\n<strong> provavelmente vai perder mais rapidamente seu emprego e muito dificilmente conseguir\u00e1 recomenda\u00e7\u00e3o para outro, dada a pouca qualidade do seu trabalho.<\/strong><br \/>\n<strong> Lembre-se que voc\u00ea tamb\u00e9m precisar\u00e1 corrigir programas dos outros.<\/strong><br \/>\n<strong> Garanto que se os outros n\u00f5 seguirem as regras acima, voce vai entender claramente porque elas s\u00e3o t\u00e3o importantes!<\/div><\/strong><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-96","page","type-page","status-publish","hentry"],"wps_subtitle":"","_links":{"self":[{"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/pages\/96","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":8,"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/pages\/96\/revisions"}],"predecessor-version":[{"id":105,"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/pages\/96\/revisions\/105"}],"wp:attachment":[{"href":"https:\/\/liag.ft.unicamp.br\/programacao2\/wp-json\/wp\/v2\/media?parent=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}