{"id":230061,"date":"2022-11-17T10:11:00","date_gmt":"2022-11-17T07:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230061"},"modified":"2022-11-17T19:28:20","modified_gmt":"2022-11-17T16:28:20","slug":"programacao-orientada-a-objetos-no-wordpress-analise-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/programacao-orientada-a-objetos-no-wordpress-analise-parte-2\/","title":{"rendered":"Programa\u00e7\u00e3o Orientada a Objetos no WordPress: An\u00e1lise, Parte 2"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/programacao-orientada-a-objetos-no-wordpress-analise-parte-1\/\" title=\"No primeiro post desta s\u00e9rie\">No primeiro post desta s\u00e9rie<\/a>, falei sobre como queria abordar uma introdu\u00e7\u00e3o \u00e0 programa\u00e7\u00e3o orientada a objetos no contexto do WordPress.<\/p>\n<p>Existem alguns \u00f3timos recursos para programa\u00e7\u00e3o orientada a objetos, mas eles podem usar exemplos artificiais ou podem se mover muito rapidamente para aqueles que est\u00e3o apenas come\u00e7ando.<\/p>\n<p>Na tentativa de evitar que isso aconte\u00e7a, acho que falar sobre POO no WordPress nos ancora em uma base s\u00f3lida e usar exemplos pr\u00e1ticos sempre ser\u00e1 melhor do que usar exemplos gen\u00e9ricos que s\u00e3o dif\u00edceis de traduzir para o dom\u00ednio em que estamos trabalhando.<\/p>\n<p>Para aqueles que <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ainda n\u00e3o aderiram<\/a> ou que ainda n\u00e3o se atualizaram, o primeiro post aborda os seguintes t\u00f3picos:<\/p>\n<ul>\n<li>An\u00e1lise Orientada a Objetos,<\/li>\n<li>Determinando Must-Haves versus Nice-To-Haves,<\/li>\n<li>E Por Que \u00c9 Dif\u00edcil?<\/li>\n<\/ul>\n<p>E \u00e9 a\u00ed que este post vai pegar.<\/p>\n<h2>Programa\u00e7\u00e3o Orientada a Objetos: Mais An\u00e1lise<\/h2>\n<p>Eu sei: quando se trata de escrever c\u00f3digo, a primeira coisa que queremos fazer \u00e9 sentar e come\u00e7ar a escrever c\u00f3digo. O que \u00e9 melhor do que fazer algo acontecer na tela?<\/p>\n<p>E quando voc\u00ea est\u00e1 fazendo isso por si mesmo, n\u00e3o \u00e9 grande coisa, mas quando voc\u00ea est\u00e1 escrevendo c\u00f3digo, isso ser\u00e1:<\/p>\n<ul>\n<li>mantido por uma equipe de pessoas,<\/li>\n<li>\u00e0 venda,<\/li>\n<li>ou para todos os itens acima<\/li>\n<\/ul>\n<p>Faz diferen\u00e7a. Porque uma boa an\u00e1lise pode levar a uma boa organiza\u00e7\u00e3o que pode levar a uma boa manutenibilidade.<\/p>\n<p>Caso contr\u00e1rio, voc\u00ea est\u00e1 montando algo para enviar e n\u00e3o vai se adaptar bem \u00e0s vers\u00f5es futuras. E isso \u00e9 algo sobre o qual falaremos em profundidade ao longo da s\u00e9rie.<\/p>\n<p>Mas qual \u00e9 uma boa maneira de resumir uma boa an\u00e1lise em tr\u00eas etapas f\u00e1ceis? Esta n\u00e3o \u00e9 necessariamente uma resposta \u00e0 prova de balas, mas \u00e9 o que tentamos fazer sempre que estamos trabalhando em projetos:<\/p>\n<ol>\n<li>Certifique-se de que o c\u00f3digo faz o que o cliente quer,<\/li>\n<li>Aplicar boas pr\u00e1ticas orientadas a objetos,<\/li>\n<li>Apontar para um design sustent\u00e1vel.<\/li>\n<\/ol>\n<p>Tudo isso soa bem em teoria, mas sem mergulhar mais fundo em cada um, como sabemos se estamos fazendo isso certo? Em outras palavras, \u00e9 aqui que frequentemente encontramos livros, recursos e outros utilit\u00e1rios que tornam dif\u00edcil se tornar um programador orientado a objetos melhor.<\/p>\n<p>\u00c9 exatamente isso que quero evitar, ent\u00e3o vou me aprofundar um pouco mais em cada ponto.<\/p>\n<h3>1 O que o cliente quer<\/h3>\n<p>Este pode ser um dos aspectos mais desafiadores de todo o projeto, muitas vezes porque n\u00f3s, como desenvolvedores, falamos uma linguagem diferente do cliente.<\/p>\n<p>Eles n\u00e3o apenas costumam usar terminologia que n\u00e3o usar\u00edamos, como tamb\u00e9m pensam que o que querem na tela \u00e9 a melhor maneira de fazer isso. Isso faz parecer muito condescendente e errado tentar corrigi-los, n\u00e3o \u00e9?<\/p>\n<p>Quero dizer, imagine tentar dizer a algu\u00e9m que voc\u00ea sabe o que quer, e eles te corrigem. Lidar com isso com cuidado \u00e9 algo que pode ganhar grande equidade relacional, mas leva um certo tempo para &#8220;escavar&quot; o que eles realmente querem versus o que eles dizem que querem.<\/p>\n<p>E vamos nos aprofundar mais nisso em um post futuro.<\/p>\n<h3>2 Pr\u00e1ticas Orientadas a Objetos<\/h3>\n<p>Obviamente, isso vem de saber quais s\u00e3o as boas pr\u00e1ticas orientadas a objetos e isso \u00e9 algo que pretendo abordar.<\/p>\n<p>Muitas pessoas v\u00e3o dizer coisas usando coisas como:<\/p>\n<ul>\n<li>os princ\u00edpios SOLID,<\/li>\n<li>heran\u00e7a,<\/li>\n<li>C\u00f3digo SECO,<\/li>\n<li>Inje\u00e7\u00e3o de depend\u00eancia,<\/li>\n<li>e assim por diante<\/li>\n<\/ul>\n<p>Todos s\u00e3o importantes para seguir boas pr\u00e1ticas orientadas a objetos.<\/p>\n<p>E talvez isso n\u00e3o seja uma coisa popular de se dizer, mas tenho a mentalidade de que tentar usar todas as coisas o tempo todo nem sempre \u00e9 uma boa ideia. Ou seja, voc\u00ea definitivamente n\u00e3o quer que o c\u00f3digo seja repetido em toda a sua base de c\u00f3digo, mas voc\u00ea precisa ter heran\u00e7a em sua base de c\u00f3digo?<\/p>\n<p>N\u00e3o.<\/p>\n<p>H\u00e1 momentos em que os princ\u00edpios devem ser aplicados e quando podem ser ignorados. Mas conhec\u00ea-los, quando s\u00e3o mais bem utilizados e quando us\u00e1-los s\u00e3o fundamentais para o uso adequado dessas pr\u00e1ticas.<\/p>\n<h3>3 Design sustent\u00e1vel<\/h3>\n<p>Simplificando, aplicar padr\u00f5es e princ\u00edpios ao seu software ao escrev\u00ea-lo \u00e9 o que o tornar\u00e1 muito mais f\u00e1cil de usar e manter no futuro.<\/p>\n<p>Mas, novamente, isso depende de:<\/p>\n<ol>\n<li>entender completamente o que o cliente quer,<\/li>\n<li>saber quais pr\u00e1ticas existem, quando aplic\u00e1-las e quando evit\u00e1-las.<\/li>\n<\/ol>\n<p>E para fazer tudo isso, precisamos olhar para cada ponto dentro de seu contexto antes de dar um passo atr\u00e1s para olhar o quadro maior.<\/p>\n<h2>O que o cliente quer?<\/h2>\n<p>Obviamente, h\u00e1 muito terreno a percorrer quando se trata dos tr\u00eas pontos acima. Mas se voc\u00ea quiser escrever um software bom e de f\u00e1cil manuten\u00e7\u00e3o dentro da economia do WordPress, \u00e9 importante entender como tudo isso se encaixa.<\/p>\n<p>Ent\u00e3o, ao inv\u00e9s de avan\u00e7ar para escrever c\u00f3digo ou avan\u00e7ar para trabalhar em um projeto, a pr\u00f3xima coisa que vamos analisar \u00e9 como pegar o que o cliente quer e ent\u00e3o decifrar isso em um conjunto de requisitos que nos permitem criar um declara\u00e7\u00e3o de trabalho.<\/p>\n<p>Dessa forma, teremos um documento de trabalho do que o cliente deseja e do que vamos construir, e estaremos todos na mesma p\u00e1gina.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Falar sobre programa\u00e7\u00e3o orientada a objetos no WordPress nos ancora em uma base s\u00f3lida e usar exemplos pr\u00e1ticos sempre ser\u00e1 melhor que gen\u00e9ricos.<\/p>\n","protected":false},"author":1,"featured_media":165340,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722],"tags":[1170],"class_list":["post-230061","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=230061"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230061\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/165340"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=230061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=230061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=230061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}