{"id":230582,"date":"2022-12-14T17:33:00","date_gmt":"2022-12-14T14:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230582"},"modified":"2022-12-07T11:35:06","modified_gmt":"2022-12-07T08:35:06","slug":"refaktorerar-helt-enkelt-wordpress-baserad-kod","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/refaktorerar-helt-enkelt-wordpress-baserad-kod\/","title":{"rendered":"Refaktorerar helt enkelt WordPress-baserad kod"},"content":{"rendered":"<p>Redan 2011 l\u00e4ste jag mycket om att arbeta med \u00e4ldre kod, kodkvalitet och refaktorering.<\/p>\n<p>Det finns ett citat av <strong><a href=\"https:\/\/martinfowler.com\/bliki\/OpportunisticRefactoring.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Martin Fowler<\/a><\/strong> (som bokstavligen <strong><a href=\"https:\/\/martinfowler.com\/books\/refactoring.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">skrev boken<\/a><\/strong> om refactoring) som tillskrivs <a href=\"https:\/\/twitter.com\/unclebobmartin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">farbror Bob<\/a> som har fastnat f\u00f6r mig \u2013 och jag \u00e4r s\u00e4ker p\u00e5 att m\u00e5nga, m\u00e5nga programmerare \u2013 sedan dess:<\/p>\n<blockquote>\n<p>l\u00e4mna alltid koden bakom dig i ett b\u00e4ttre skick \u00e4n du hittade den<\/p>\n<\/blockquote>\n<p>Grejen med just den h\u00e4r id\u00e9n \u00e4r att jag tror att det kanske l\u00e5ter lite mer idealistiskt tills du verkligen b\u00f6rjar f\u00f6rs\u00f6ka praktisera den i allt du g\u00f6r.<\/p>\n<p>Det vill s\u00e4ga, om du tar det till nominellt v\u00e4rde l\u00e5ter det som n\u00e4r du beh\u00f6ver arbeta p\u00e5 en kodbas, d\u00e5 m\u00e5ste du l\u00e4mna hela kodbasen b\u00e4ttre \u00e4n n\u00e4r du hittade den. Men ju mer jag har f\u00f6rs\u00f6kt till\u00e4mpa denna regel i mitt dagliga arbete, desto mer praktisk, desto renare och mer underh\u00e5llbar har WordPress-specifik kod blivit.<\/p>\n<p>S\u00e5 n\u00e4r det g\u00e4ller att omfaktorisera WordPress-baserad kod, hur ser det ut?<\/p>\n<p>Det h\u00e4r kommer inte att bli ett l\u00e5ngt inl\u00e4gg. Ist\u00e4llet kommer jag helt enkelt att dela med mig av n\u00e5gra punkter som jag f\u00f6ljer n\u00e4r det g\u00e4ller att arbeta med kod som jag tidigare har skrivit, som jag st\u00f6ter p\u00e5 fr\u00e5n andra, eller som \u00e4r fr\u00e5n en kodbas som jag har arbetat p\u00e5 med andra i d\u00e5tid.<\/p>\n<p>I ingen best\u00e4md ordning:<\/p>\n<ul>\n<li><strong>Var inte idealistisk; Var praktisk<\/strong>. Att omfaktorisera en hel kodbas \u00e4r inte n\u00e5got som \u00e4r praxis, s\u00e4rskilt om kodbasen inte \u00e4r insvept i enhetstester. Titta p\u00e5 koden du arbetar med och se vilka mindre \u00e4ndringar du kan g\u00f6ra f\u00f6r att f\u00f6rb\u00e4ttra den.<\/li>\n<li><strong>Anv\u00e4nd de senaste standarderna<\/strong>. Du beh\u00f6ver inte st\u00e4lla in en helt ny utvecklingsmilj\u00f6 f\u00f6r \u00e4ldre kod. Se ist\u00e4llet till att du har bra kodsniffer p\u00e5 plats. Om du har g\u00e5tt fr\u00e5n WordPress Coding Standards till PSR, titta p\u00e5 varningarna eller meddelandena som sniffarna kastar och f\u00f6rs\u00f6ker uppdatera koden bara i den filen (eller upps\u00e4ttningen filer).<\/li>\n<li><strong>Skrivhj\u00e4lpfunktioner<\/strong>. Om dina funktioner \u00e4r f\u00f6r l\u00e5nga, leta efter s\u00e4tt att g\u00f6ra dem l\u00e4ttare att arbeta med. Uppdatera f\u00f6rst eventuella kontrollstrukturer som loopar eller villkor, skriv sedan hj\u00e4lpfunktioner f\u00f6r att g\u00f6ra dem l\u00e4ttare att l\u00e4sa.<\/li>\n<li><strong>L\u00e4gg till tester (n\u00e4r det \u00e4r m\u00f6jligt)<\/strong>. Om du redan har ett ramverk f\u00f6r enhetstestning, l\u00e4gg till tester f\u00f6r din nya kod. Om du inte har tid eller inte har ramarna, svettas inte. S\u00e5 mycket som pragmatiska programmerare predikar det, finns det inte alltid tid att l\u00e4gga till tester. (Detta ska inte vara ett p\u00e5st\u00e5ende om att de inte \u00e4r anv\u00e4ndbara eller inte b\u00f6r inkluderas, men att det inte alltid \u00e4r praktiskt att inf\u00f6rliva dem vid en given tidpunkt).<\/li>\n<\/ul>\n<p>N\u00e5gra av de saker som jag har funnit mig g\u00f6ra i de senaste projekten inkluderar enkla saker ocks\u00e5:<\/p>\n<ul>\n<li>uppdatera variabel- och funktionsnamn f\u00f6r att f\u00f6lja PSR,<\/li>\n<li>\u00e4ndra flikar till blanksteg,<\/li>\n<li>l\u00e4gga till hj\u00e4lpfunktioner f\u00f6r att g\u00f6ra villkor och loopar mer l\u00e4sbara,<\/li>\n<li>dela upp klasser f\u00f6r att de har en h\u00f6gre grad av sammanh\u00e5llning,<\/li>\n<li>f\u00f6rb\u00e4ttra docblocken f\u00f6r varje funktion<\/li>\n<\/ul>\n<p>Detta \u00e4r bara n\u00e5gra av exemplen och detta \u00e4r uppenbarligen inte en utt\u00f6mmande lista. Men det \u00e4r inte meningen. Ist\u00e4llet vill jag helt enkelt dela med dig av hur du kan till\u00e4mpa refaktorerande WordPress-baserad kod samtidigt som du f\u00e5r ditt dagliga arbete gjort p\u00e5 ett hanterbart s\u00e4tt.<\/p>\n<p>Alla ovanst\u00e5ende \u00e4ndringar eller rekommendationer \u00e4r saker som vanligtvis kan g\u00f6ras med hj\u00e4lp av IDE, n\u00e5gra genv\u00e4gar och med kanske en halvtimmes extra tid (och jag \u00e4r liberal med den uppskattningen).<\/p>\n<p>S\u00e5 nej, du beh\u00f6ver inte skriva om en hel kodbas. Jag vet inte ens om det \u00e4r ett praktiskt m\u00e5l att sikta p\u00e5. Men du kan fixa en liten bit av det \u00f6vergripande systemet som du \u00e4r ansvarig f\u00f6r?<\/p>\n<p>Och varf\u00f6r inte \u00e5tminstone sikta p\u00e5 det?<\/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>Ju mer jag f\u00f6rs\u00f6ker till\u00e4mpa detta i mitt dagliga arbete, desto b\u00e4ttre har min kod blivit. N\u00e4r det g\u00e4ller att omfaktorisera WordPress-baserad kod, hur ser det ut?<\/p>\n","protected":false},"author":1,"featured_media":235914,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,901,724,868],"tags":[1173],"class_list":["post-230582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230582","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=230582"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230582\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}