{"id":229511,"date":"2022-11-17T10:27:00","date_gmt":"2022-11-17T07:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229511"},"modified":"2022-11-17T19:28:20","modified_gmt":"2022-11-17T16:28:20","slug":"objektorienterad-programmering-i-wordpress-analys-del-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/objektorienterad-programmering-i-wordpress-analys-del-2\/","title":{"rendered":"Objektorienterad programmering i WordPress: Analys, del 2"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/objektorienterad-programmering-i-wordpress-analys-del-1\/\" title=\"I det f\u00f6rsta inl\u00e4gget i den h\u00e4r serien\">I det f\u00f6rsta inl\u00e4gget i den h\u00e4r serien<\/a> pratade jag allt om hur jag ville ta mig an en introduktion till objektorienterad programmering inom WordPress-sammanhang.<\/p>\n<p>Det finns n\u00e5gra bra resurser f\u00f6r objektorienterad programmering men de kan anv\u00e4nda konstruerade exempel, eller s\u00e5 kan de g\u00e5 f\u00f6r snabbt f\u00f6r dem som bara vill komma ig\u00e5ng.<\/p>\n<p>I ett f\u00f6rs\u00f6k att f\u00f6rhindra att detta h\u00e4nder, tror jag att det att prata om OOP i WordPress f\u00f6rankrar oss p\u00e5 en stark grund och att anv\u00e4nda praktiska exempel kommer alltid att vara b\u00e4ttre \u00e4n att anv\u00e4nda generiska exempel som \u00e4r sv\u00e5ra att \u00f6vers\u00e4tta till den dom\u00e4n d\u00e4r vi arbetar.<\/p>\n<p>F\u00f6r de som <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e4nnu inte<\/a> har g\u00e5tt med eller som inte har kommit ikapp \u00e4nnu, det f\u00f6rsta inl\u00e4gget tr\u00e4ffar f\u00f6ljande \u00e4mnen:<\/p>\n<ul>\n<li>Objektorienterad analys,<\/li>\n<li>Best\u00e4mma m\u00e5ste-has kontra Nice-to-haves,<\/li>\n<li>Och varf\u00f6r \u00e4r det sv\u00e5rt?<\/li>\n<\/ul>\n<p>Och det \u00e4r d\u00e4r detta inl\u00e4gg kommer att plocka upp.<\/p>\n<h2>Objektorienterad programmering: mer analys<\/h2>\n<p>Jag vet: N\u00e4r det kommer till att skriva kod \u00e4r det f\u00f6rsta vi vill g\u00f6ra att s\u00e4tta oss ner och b\u00f6rja skriva kod. Vad \u00e4r b\u00e4ttre \u00e4n att f\u00e5 n\u00e5got att h\u00e4nda p\u00e5 sk\u00e4rmen?<\/p>\n<p>Och n\u00e4r du g\u00f6r det h\u00e4r f\u00f6r dig sj\u00e4lv \u00e4r det inte s\u00e5 stor sak, men n\u00e4r du skriver kod kommer det att vara:<\/p>\n<ul>\n<li>underh\u00e5lls av ett team av m\u00e4nniskor,<\/li>\n<li>till salu,<\/li>\n<li>eller f\u00f6r alla ovanst\u00e5ende<\/li>\n<\/ul>\n<p>Det g\u00f6r skillnad. F\u00f6r bra analys kan leda till bra organisation som kan leda till god underh\u00e5llsbarhet.<\/p>\n<p>Annars klappar du ihop n\u00e5got f\u00f6r att skicka, och det kommer inte att skala bra med framtida versioner. Och det h\u00e4r \u00e4r n\u00e5got vi kommer att prata om p\u00e5 djupet genom hela serien.<\/p>\n<p>Men vad \u00e4r ett bra s\u00e4tt att sammanfatta att g\u00f6ra bra analys i tre enkla steg? Det h\u00e4r \u00e4r inte n\u00f6dv\u00e4ndigtvis ett skotts\u00e4kert svar, men det \u00e4r vad vi f\u00f6rs\u00f6ker g\u00f6ra n\u00e4r vi arbetar med projekt:<\/p>\n<ol>\n<li>Se till att koden g\u00f6r vad kunden vill ha,<\/li>\n<li>Till\u00e4mpa goda objektorienterade metoder,<\/li>\n<li>Str\u00e4va efter en underh\u00e5llbar design.<\/li>\n<\/ol>\n<p>Allt detta l\u00e5ter bra i teorin, men utan att ta en djupare dykning i varje, hur vet vi om vi g\u00f6r det h\u00e4r r\u00e4tt? Med andra ord, det \u00e4r h\u00e4r vi ofta hittar b\u00f6cker, resurser och andra verktyg som g\u00f6r det sv\u00e5rt att bli en b\u00e4ttre objektorienterad programmerare.<\/p>\n<p>Det \u00e4r precis det jag vill undvika, s\u00e5 jag ska gr\u00e4va lite djupare i varje punkt.<\/p>\n<h3>1 Vad kunden vill ha<\/h3>\n<p>Detta kan vara en av de mest utmanande aspekterna av hela projektet ofta eftersom vi som utvecklare talar ett annat spr\u00e5k kunden.<\/p>\n<p>Inte nog med att de ofta anv\u00e4nder terminologi som vi inte skulle anv\u00e4nda, de tror ofta att det de vill ha p\u00e5 sk\u00e4rmen \u00e4r det b\u00e4sta s\u00e4ttet att g\u00e5 tillv\u00e4ga. Detta g\u00f6r att det l\u00e5ter riktigt nedl\u00e5tande och fel att f\u00f6rs\u00f6ka r\u00e4tta till dem, eller hur?<\/p>\n<p>Jag menar, t\u00e4nk dig att f\u00f6rs\u00f6ka ber\u00e4tta f\u00f6r n\u00e5gon att du vet vad du vill, och de r\u00e4ttar dig. Att hantera detta med omsorg \u00e4r n\u00e5got som kan f\u00e5 stor relationell r\u00e4ttvisa men det tar en viss tid att &quot;gr\u00e4va ut&quot; vad det \u00e4r de verkligen vill ha kontra vad de s\u00e4ger att de vill ha.<\/p>\n<p>Och vi kommer att dyka ner i detta mer i ett framtida inl\u00e4gg.<\/p>\n<h3>2 Objektorienterade metoder<\/h3>\n<p>Uppenbarligen kommer detta fr\u00e5n att veta vad de goda objektorienterade metoderna \u00e4r och det \u00e4r n\u00e5got som jag planerar att t\u00e4cka.<\/p>\n<p>M\u00e5nga m\u00e4nniskor kommer att s\u00e4ga saker med saker som:<\/p>\n<ul>\n<li>SOLID principerna,<\/li>\n<li>arv,<\/li>\n<li>DRY kod,<\/li>\n<li>beroendeinjektion,<\/li>\n<li>och s\u00e5 vidare<\/li>\n<\/ul>\n<p>Alla \u00e4r viktiga f\u00f6r att f\u00f6lja goda objektorienterade metoder.<\/p>\n<p>Och det kanske inte \u00e4r en popul\u00e4r sak att s\u00e4ga, men jag \u00e4r av inst\u00e4llningen att det inte alltid \u00e4r en bra id\u00e9 att f\u00f6rs\u00f6ka anv\u00e4nda alla saker hela tiden. Dvs du vill definitivt inte ha kod upprepad genom hela din kodbas, men m\u00e5ste du ha arv i din kodbas?<\/p>\n<p>Nej.<\/p>\n<p>Det finns tillf\u00e4llen d\u00e5 principer b\u00f6r till\u00e4mpas och n\u00e4r de kan ignoreras. Men att k\u00e4nna till dem, n\u00e4r de anv\u00e4nds b\u00e4st och n\u00e4r de ska anv\u00e4ndas \u00e4r nyckeln f\u00f6r att anv\u00e4nda dessa metoder p\u00e5 r\u00e4tt s\u00e4tt.<\/p>\n<h3>3 Underh\u00e5llbar design<\/h3>\n<p>Enkelt uttryckt, att till\u00e4mpa m\u00f6nster och principer p\u00e5 din programvara n\u00e4r du skriver den \u00e4r det som kommer att g\u00f6ra det mycket l\u00e4ttare att anv\u00e4nda och underh\u00e5lla i framtiden.<\/p>\n<p>Men \u00e5terigen, detta \u00e4r beroende av:<\/p>\n<ol>\n<li>full f\u00f6rst\u00e5else f\u00f6r vad kunden vill ha,<\/li>\n<li>att veta vilka metoder som finns, n\u00e4r de ska till\u00e4mpas och n\u00e4r de ska undvikas.<\/li>\n<\/ol>\n<p>Och f\u00f6r att g\u00f6ra allt ovanst\u00e5ende m\u00e5ste vi titta p\u00e5 varje punkt inom sitt sammanhang innan vi tar ett steg tillbaka f\u00f6r att titta p\u00e5 den st\u00f6rre bilden.<\/p>\n<h2>Vad vill kunden ha?<\/h2>\n<p>Uppenbarligen finns det mycket mark att t\u00e4cka n\u00e4r det kommer till ovanst\u00e5ende tre punkter. Men om du vill skriva bra, underh\u00e5llbar programvara inom WordPress-ekonomin \u00e4r det viktigt att f\u00f6rst\u00e5 hur allt detta h\u00e4nger ihop.<\/p>\n<p>S\u00e5 i st\u00e4llet f\u00f6r att g\u00e5 vidare med att skriva kod eller att b\u00f6rja arbeta med ett projekt, \u00e4r n\u00e4sta sak vi ska unders\u00f6ka hur vi ska ta vad kunden vill ha och sedan dechiffrera det till en upps\u00e4ttning krav som g\u00f6r att vi kan skapa en arbetsf\u00f6rklaring.<\/p>\n<p>P\u00e5 s\u00e5 s\u00e4tt kommer vi i slut\u00e4ndan att ha ett arbetsdokument \u00f6ver vad kunden vill ha och vad vi ska bygga, och vi kommer alla att vara p\u00e5 samma sida.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Att prata om objektorienterad programmering i WordPress f\u00f6rankrar oss p\u00e5 en stark grund och att anv\u00e4nda praktiska exempel kommer alltid att vara b\u00e4ttre \u00e4n generika.<\/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":[901,724],"tags":[1173],"class_list":["post-229511","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=229511"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229511\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/165340"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}