{"id":229501,"date":"2022-11-17T19:28:00","date_gmt":"2022-11-17T16:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229501"},"modified":"2022-11-09T08:12:53","modified_gmt":"2022-11-09T05:12:53","slug":"objektorienterad-programmering-i-wordpress-analys-del-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/objektorienterad-programmering-i-wordpress-analys-del-1\/","title":{"rendered":"Objektorienterad programmering i WordPress: Analys, del 1"},"content":{"rendered":"\n<p>N\u00e4r jag f\u00f6rst ville erbjuda <a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">medlemskap<\/a> p\u00e5 den h\u00e4r webbplatsen visste jag att det f\u00f6rsta jag ville ta itu med var en introduktion till objektorienterad programmering.<\/p>\n<p>Det \u00e4r n\u00e5got som verkar vara intressant f\u00f6r de flesta som arbetar i WordPress, men det finns ett problem som antingen avvisar m\u00e5nga m\u00e4nniskor eller genererar d\u00e5liga resultat:<\/p>\n<p>Objektorienterad programmering kan bli komplicerad snabbt. Och det h\u00e4r blir demotiverande.<\/p>\n<p>S\u00e5 h\u00e4r menar jag: S\u00e4g att du \u00e4r en WordPress-utvecklare som b\u00f6rjar forska i objektorienterad programmering. Det b\u00f6rjar prata om klasser och konstrukt\u00f6rer och funktioner, och allt verkar bra.<\/p>\n<p>Men sedan kommer det snabbt in:<\/p>\n<ul>\n<li>privata och skyddade metoder,<\/li>\n<li>arv,<\/li>\n<li>polymorfism,<\/li>\n<li>Design m\u00f6nster,<\/li>\n<li>beroendeinjektion,<\/li>\n<li>f\u00f6rr\u00e5d,<\/li>\n<li>och s\u00e5 vidare.<\/li>\n<\/ul>\n<p>Det sn\u00f6ar, eller hur? Och det \u00e4r inte alls s\u00e5 det m\u00e5ste vara, men det \u00e4r sv\u00e5rt att hitta en ordentlig introduktion f\u00f6rutom <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e5gra resurser<\/a> som finns d\u00e4r ute.<\/p>\n<p>Med allt detta sagt (och som en bakgrund f\u00f6r vart jag \u00e4r p\u00e5 v\u00e4g), ville jag s\u00e4tta mig in i att skapa en serie inneh\u00e5ll f\u00f6r dem som:<\/p>\n<ul>\n<li>\u00e4r genuint intresserad av objektorienterad programmering,<\/li>\n<li>vet inte var jag ska b\u00f6rja,<\/li>\n<li>vill utveckla sina kunskaper,<\/li>\n<li>vill b\u00f6rja fr\u00e5n noll utan att eskalera till mer komplicerat material f\u00f6r snabbt.<\/li>\n<\/ul>\n<p>Och det \u00e4r vad jag b\u00f6rjar idag och i den f\u00f6rsta stora seri\u00f6sa planerade f\u00f6r <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">medlemmarna<\/a>. Med allt detta sagt, l\u00e5t oss b\u00f6rja.<\/p>\n<p>Specifikt, l\u00e5t oss b\u00f6rja prata om objektorienterad programmering, analys, design och varf\u00f6r hon borde b\u00f6rja d\u00e4r.<\/p>\n<h2>Objektorienterad programmering: Analys<\/h2>\n<p>N\u00e4r det g\u00e4ller att skriva kod finns det f\u00f6r n\u00e4rvarande tre popul\u00e4ra s\u00e4tt att g\u00f6ra det:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funktionell<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">processuella<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">objektorienterad<\/a>.<\/li>\n<\/ul>\n<p>N\u00e4rhelst vi arbetar med och l\u00e4ser WordPress-kod kommer du att l\u00e4sa en kombination av procedurkod och objektorienterad kod.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.png\" alt=\"Objektorienterad programmering i WordPress: Analys, del 1\" ><\/a><\/p>\n<p>Det finns n\u00e5gra anledningar till att detta \u00e4r fallet, men det ligger utanf\u00f6r ramen f\u00f6r v\u00e5r diskussion.<\/p>\n<p>Detta beror p\u00e5 att WordPress \u00e4r byggt med b\u00e5de och f\u00f6r att vissa aspekter av WordPress-utveckling kan skrivas med procedurkod, som plugins och teman, och andra kr\u00e4ver objektorienterad utveckling som <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">widgets<\/a>.<\/p>\n<h3>Analys och design<\/h3>\n<p>S\u00e5 ofta \u00e4r det f\u00f6rsta vi vill g\u00f6ra, som utvecklare (blivande eller inte), att genast b\u00f6rja skriva kod. Jag f\u00e5r ocks\u00e5. Det \u00e4r kul. Vi har en id\u00e9, vi vill f\u00f6rverkliga den, vi vill b\u00f6rja anv\u00e4nda den och vi vill visa den f\u00f6r andra m\u00e4nniskor.<\/p>\n<p>Men h\u00e4r \u00e4r problemet med att g\u00f6ra det: Vi hoppar ofta direkt till att skriva kod f\u00f6r att f\u00f6rs\u00f6ka f\u00e5 projektet att g\u00f6ra vad vi vill att det ska g\u00f6ra.<\/p>\n<p>Om det h\u00e4r \u00e4r ett enkelt (och jag menar verkligen enkelt) projekt, s\u00e5 \u00e4r det inte s\u00e5 stor sak. \u00c4rligt talat, jag har gjort det (och <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> \u00e4r ett bevis p\u00e5 det). Men n\u00e4r det kommer till arbetet vi g\u00f6r p\u00e5 <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware<\/a> ; det \u00e4r en annan historia.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.png\" alt=\"Objektorienterad programmering i WordPress: Analys, del 1\" ><\/a><\/p>\n<p>N\u00e4r det kommer till s\u00e5dana projekt vill vi g\u00f6ra lite Analys och Design innan vi skriver kod.<\/p>\n<p>Vilket v\u00e4cker fr\u00e5gan, vad \u00e4r objektorienterad analys och design?<\/p>\n<h4>Analys<\/h4>\n<p>Kort sagt, t\u00e4nk p\u00e5 det s\u00e5 h\u00e4r:<\/p>\n<p>Analysen \u00e4r processen att ta id\u00e9n som kunden eller som du har och gr\u00e4va fram vad som verkligen beh\u00f6ver byggas.<\/p>\n<p>Detta kan hj\u00e4lpa dig att avg\u00f6ra vad som \u00e4r f\u00f6rdelen med applikationen och vad som inte \u00e4r n\u00f6dv\u00e4ndigt f\u00f6r den f\u00f6rsta versionen av applikationen. Jag gillar att m\u00e4rka dessa s\u00e5 l\u00e5ngt som &quot;m\u00e5sten&quot; och vad som \u00e4r &quot;trevliga att ha&quot;.<\/p>\n<p>En bra tumregel \u00e4r denna:<\/p>\n<ul>\n<li><strong>m\u00e5ste-has<\/strong> \u00e4r de saker som \u00e4r k\u00e4rnan i applikationen och m\u00e5ste g\u00e5 in i den f\u00f6rsta iterationen av projektet,<\/li>\n<li><strong>trevliga att ha<\/strong> \u00e4r de saker som vi s\u00e5 sm\u00e5ningom kan bygga in i den<\/li>\n<\/ul>\n<p>I slut\u00e4ndan hj\u00e4lper detta oss att arbeta mot en stark f\u00f6rsta version f\u00f6r kunden. Ett exempel \u00e4r kanske f\u00f6r WordPress:<\/p>\n<ul>\n<li>Beh\u00f6vde den f\u00f6rsta versionen av WordPress ha ett plugin-API eller beh\u00f6vde den bara ha m\u00f6jlighet f\u00f6r m\u00e4nniskor att skriva inl\u00e4gg och publicera dem p\u00e5 webben?<\/li>\n<\/ul>\n<p>Om du bygger en plattform f\u00f6r att blogga, m\u00e5ste den kunna ut\u00f6kas fr\u00e5n den f\u00f6rsta versionen? Detta \u00e4r inget annat \u00e4n ett exempel, men du f\u00f6rst\u00e5r tanken.<\/p>\n<h4>Vad g\u00f6r analys s\u00e5 sv\u00e5r?<\/h4>\n<p>Jag tror att det ofta har med personas att g\u00f6ra.<\/p>\n<p>Till exempel tycker vi som programmerare att ett projekt alltid ska g\u00f6ra som kunden vill. Sanningen \u00e4r att det inte alltid \u00e4r fallet.<\/p>\n<p>Jag menar, s\u00e5 sm\u00e5ningom kan det bli det, men den f\u00f6rsta versionen av projektet beh\u00f6ver inte n\u00f6dv\u00e4ndigtvis vara s\u00e5.<\/p>\n<p>Dessutom \u00e4r en av de objektorienterade programmeringsprinciperna att vi inte skriver en massa duplicerad kod. Men det kan vara mycket sv\u00e5rt att g\u00f6ra om korrekt analys inte har gjorts.<\/p>\n<p>Slutligen kommer de som \u00e4r mer erfarna att s\u00e4ga att bra programvara kommer att anv\u00e4nda bepr\u00f6vade och sanna principer \u2013 vare sig det \u00e4r designm\u00f6nster eller inte \u2013 men att den l\u00e4tt kan \u00e4ndras \u00f6ver tid. Som p\u00e5 s\u00e4tt och vis v\u00e4xer organiskt.<\/p>\n<h2>S\u00e5 vad ska vi g\u00f6ra?<\/h2>\n<p>I n\u00e4sta artikel kommer jag att prata om tre saker vi kan g\u00f6ra som utvecklare f\u00f6r att se till att mjukvaran vi bygger \u00e5t oss sj\u00e4lva eller andra tar oss i r\u00e4tt riktning.<\/p>\n<p>Jag kommer inte s\u00e4ga att det \u00e4r en silverkula eftersom jag inte tror att det finns, men jag kommer att s\u00e4ga att det \u00e4r ett ganska starkt tillv\u00e4gag\u00e5ngss\u00e4tt som jag har hittat andra att anv\u00e4nda och bra som mig sj\u00e4lv och att det leder till en ganska bra riktning n\u00e4r det g\u00e4ller objektorienterad analys.<\/p>\n<p>Detta kommer s\u00e5 sm\u00e5ningom att ta oss till design. Men vi \u00e4r inte d\u00e4r \u00e4n.<\/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>Objektorienterad programmering i WordPress, \u00e4n mindre vilken plattform som helst, kan vara en skr\u00e4mmande uppgift. Men jag vill b\u00f6rja p\u00e5 ground zero och g\u00e5 vidare d\u00e4rifr\u00e5n.<\/p>\n","protected":false},"author":1,"featured_media":165351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[838,848,901,724],"tags":[1173],"class_list":["post-229501","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229501","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=229501"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229501\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}