{"id":351,"date":"2019-08-02T20:03:56","date_gmt":"2019-08-02T20:03:56","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=351"},"modified":"2020-01-09T11:13:09","modified_gmt":"2020-01-09T14:13:09","slug":"padroes-de-implementacao-1","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/padroes-de-implementacao-1\/","title":{"rendered":"Padr\u00f5es de Implementa\u00e7\u00e3o #1"},"content":{"rendered":"\n<p class=\"has-text-color has-vivid-cyan-blue-color wp-block-paragraph\"><strong>Teoria de Programa\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u00eas elementos: valores, princ\u00edpios e padr\u00f5es formam uma equa\u00e7\u00e3o equilibrada para um estilo de desenvolvimento. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os padr\u00f5es descrevem o que fazer, os valores fornecem motiva\u00e7\u00e3o e o princ\u00edpios ajudam a traduzir a motiva\u00e7\u00e3o em a\u00e7\u00e3o. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u00eas valores consistentes com a excel\u00eancia em programa\u00e7\u00e3o s\u00e3o comunica\u00e7\u00e3o, simplicidades e flexibilidade. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Embora \u00e0s vezes entrem em conflito, com frequ\u00eancia eles se complementam. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os melhores programas oferecem muitas op\u00e7\u00f5es para extens\u00f5es futuras, n\u00e3o cont\u00eam elementos estranhos e s\u00e3o f\u00e1ceis de ler e entender. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O c\u00f3digo deve passar uma comunica\u00e7\u00e3o onde voc\u00ea se lembre o que aquele c\u00f3digo faz mesmo depois de muito tempo sem v\u00ea-lo, e para que outras pessoas que venham a ver o c\u00f3digo entendam rapidamente o que ele faz. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Donald E. Knuth diz que o programador deve procurar escrever um c\u00f3digo como se fosse um obra de literatura, este m\u00e9todo \u00e9 chamado de programa\u00e7\u00e3o liter\u00e1ria. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Programa\u00e7\u00e3o liter\u00e1ria: <a href=\"https:\/\/pt.wikipedia.org\/wiki\/Programa%C3%A7%C3%A3o_liter%C3%A1ria\">https:\/\/pt.wikipedia.org\/wiki\/Programa%C3%A7%C3%A3o_liter%C3%A1ria<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Donald Knuth: <a href=\"https:\/\/pt.wikipedia.org\/wiki\/Donald_Knuth\">https:\/\/pt.wikipedia.org\/wiki\/Donald_Knuth<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">P\u00e1gina de Donald Knuth: <a href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/\">https:\/\/www-cs-faculty.stanford.edu\/~knuth\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O c\u00f3digo deve ser simples, c\u00f3digos complicados demais afastam as pessoas de tentarem entender o que est\u00e1 sendo passado, a\u00ed que entra comunica\u00e7\u00e3o, ou seja, a comunica\u00e7\u00e3o e a simplicidade devem sempre estar juntas. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A complica\u00e7\u00e3o do c\u00f3digo muitas vezes \u00e9 porque queremos fazer um c\u00f3digo funcionar de qualquer jeito, mas depois que funciona, dificilmente o programador volta ao c\u00f3digo e tenta deix\u00e1-lo mais simples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um c\u00f3digo flex\u00edvel muitas vezes deriva da simplicidade ou da comunica\u00e7\u00e3o, mas tamb\u00e9m pode acontecer de a simplicidade e a comunica\u00e7\u00e3o fazer o c\u00f3digo ficar mais complexo. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As vezes a complexidade do c\u00f3digo tr\u00e1s a flexibilidade, ent\u00e3o como voc\u00ea pode notar \u00e9 dif\u00edcil ter os tr\u00eas valores (comunica\u00e7\u00e3o, simplicidades e flexibilidade) no mesmo n\u00edvel em um c\u00f3digo. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A flexibilidade de um c\u00f3digo sempre visa a facilidade de modifica\u00e7\u00f5es futuras.<\/p>\n\n\n\n<p class=\"has-text-color has-vivid-cyan-blue-color wp-block-paragraph\"><strong>Princ\u00edpios<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os princ\u00edpios de um padr\u00e3o de programa\u00e7\u00e3o est\u00e3o em um n\u00edvel de ideias gerais, mais espec\u00edficos para programa\u00e7\u00e3o que os valores, mas tamb\u00e9m fundamentam os padr\u00f5es. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Princ\u00edpios relacionados a conceitos gerais, e n\u00e3o espec\u00edficos, podem fornecer uma explica\u00e7\u00e3o para a motiva\u00e7\u00e3o por tr\u00e1s de um padr\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entender os princ\u00edpios serve como guia em situa\u00e7\u00f5es novas. Vamos ver alguns princ\u00edpios que est\u00e3o por tr\u00e1s dos padr\u00f5es de implementa\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Consequ\u00eancias locais<\/strong>: estruture um c\u00f3digo que ao ser modificado apenas possa ter consequ\u00eancias locais e n\u00e3o em outros blocos de c\u00f3digo. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um c\u00f3digo estruturado desta maneira \u00e9 mais f\u00e1cil de ser entendido, porque n\u00e3o h\u00e1 a necessidade de entender todo c\u00f3digo para saber o que est\u00e1 sendo feito neste bloco de c\u00f3digo espec\u00edfico.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Minimizar repeti\u00e7\u00f5es<\/strong>: deve-se evitar repetir c\u00f3digo, porque para fazer as modifica\u00e7\u00f5es em um c\u00f3digo repetido voc\u00ea ter\u00e1 que lembrar onde mais aquele c\u00f3digo se repete. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como pode ver isto n\u00e3o \u00e9 um bom neg\u00f3cio. Uma das formas de remover uma duplica\u00e7\u00e3o \u00e9 dividir o programa em peda\u00e7os pequenos, pequenas declara\u00e7\u00f5es, pequenos m\u00e9todos, pequenos objetos, pequenos pacotes. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa comunh\u00e3o \u00e9 o que torna poss\u00edveis os padr\u00f5es: ainda que haja diferen\u00e7as entre diferentes peda\u00e7os de c\u00f3digo, h\u00e1 tamb\u00e9m muitas similaridades. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comunicar claramente quais partes do programa s\u00e3o id\u00eanticas, quais partes s\u00e3o completamente diferentes, quais partes s\u00e3o meramente similares e quais s\u00e3o completamente diferentes torna o c\u00f3digo mais f\u00e1cil de ler e mais barato de modificar. <\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-vivid-cyan-blue-background-color wp-block-paragraph\"><strong>Implementation Patterns (Addison-Wesley Signature Series (Beck)) (English Edition)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/amzn.to\/2YiLGK5\">https:\/\/amzn.to\/2YiLGK5<\/a><\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-vivid-cyan-blue-background-color wp-block-paragraph\">\u2764\ufe0f&nbsp;Curso Java Para Iniciantes&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&gt;&gt;&gt;&nbsp;<a href=\"http:\/\/bit.ly\/java-swing\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/bit.ly\/java-swing<\/a>&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-vivid-cyan-blue-background-color wp-block-paragraph\">\ud83d\udc4d&nbsp;Curso de Desenvolvimento Web Completo&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&gt;&gt;&gt;&nbsp;<a href=\"http:\/\/bit.ly\/2FnB5Sp\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/bit.ly\/2FnB5Sp<\/a>&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#java&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Teoria de Programa\u00e7\u00e3o Tr\u00eas elementos: valores, princ\u00edpios e padr\u00f5es formam uma equa\u00e7\u00e3o equilibrada para um estilo de desenvolvimento. Os padr\u00f5es descrevem o que fazer, os valores fornecem motiva\u00e7\u00e3o e o princ\u00edpios ajudam a traduzir a motiva\u00e7\u00e3o em a\u00e7\u00e3o. Tr\u00eas valores consistentes com a excel\u00eancia em programa\u00e7\u00e3o s\u00e3o comunica\u00e7\u00e3o, simplicidades e flexibilidade. Embora \u00e0s vezes entrem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":354,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[68,69],"class_list":["post-351","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-designpatterns","tag-padroes-de-implementacao","tag-padroes-de-projeto"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":5,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":663,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/351\/revisions\/663"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/354"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}