{"id":230854,"date":"2022-12-21T10:20:00","date_gmt":"2022-12-21T07:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230854"},"modified":"2022-12-21T10:21:15","modified_gmt":"2022-12-21T07:21:15","slug":"foerslag-paa-organisationsprocess","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/foerslag-paa-organisationsprocess\/","title":{"rendered":"F\u00f6rslag p\u00e5 organisationsprocess"},"content":{"rendered":"\n<p>F\u00f6r s\u00e5 mycket som jag skriver om \u2013 och \u00e4r ett fan av \u2013 objektorienterad programmering, s\u00e5 skriver jag inte s\u00e5 mycket om de tider d\u00e5 jag arbetar med en <a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">procedurkodbas<\/a>.<\/p>\n<blockquote>\n<p>Procedurprogrammering \u00e4r ett programmeringsparadigm, h\u00e4rlett fr\u00e5n strukturerad programmering, baserat p\u00e5 konceptet med proceduranropet. Procedurer, \u00e4ven k\u00e4nda som rutiner, subrutiner eller funktioner, inneh\u00e5ller helt enkelt en serie ber\u00e4kningssteg som ska utf\u00f6ras.<\/p>\n<\/blockquote>\n<p>Ibland kommer jag p\u00e5 detta fr\u00e5n kraven i ett projekt, ibland \u00e4r det fr\u00e5n ett projekt som jag har \u00e4rvt, eller ibland p\u00e5 grund av n\u00e5got annat.<\/p>\n<p>Jag tror att det \u00e4r viktigt att vi som programmerare inte h\u00e5ller ett paradigm s\u00e5 h\u00f6gt att vi drar oss f\u00f6r att arbeta med andra s\u00e4tt att skriva kod. N\u00e4r allt kommer omkring handlar handlingen att skriva kod i sin k\u00e4rna om att l\u00f6sa ett problem.<\/p>\n<p>Hur problemet l\u00f6ses kan anses vara sekund\u00e4rt.<\/p>\n<p>Oavsett, n\u00e4r jag arbetar med en kodbas; men det \u00e4r skrivet, jag f\u00f6rs\u00f6ker fortfarande se till att det \u00e4r organiserat p\u00e5 ett s\u00e4tt som \u00e4r sammanh\u00e5llet, s\u00e5 l\u00e4tt att f\u00f6lja som m\u00f6jligt och kan underh\u00e5llas \u00f6ver tid.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160742-61e711c032aea.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-160742-61e711c032aea.png\" alt=\"F\u00f6rslag p\u00e5 organisationsprocess\"><\/a><\/p>\n<p>Jag t\u00e4nkte dela med mig av hur jag n\u00e4rmar mig att skriva WordPress-plugins med procedurprogrammering kontra objektorienterad programmering och hur jag g\u00e5r tillv\u00e4ga f\u00f6r att organisera procedurkod.<\/p>\n<p>Om inte annat, kanske detta ger dig n\u00e5gra id\u00e9er f\u00f6r ett p\u00e5g\u00e5ende eller framtida projekt.<\/p>\n<h2>Organisationsprocessbalken<\/h2>\n<p>N\u00e4r det g\u00e4ller att arbeta med procedurkod finns det en stor potential att inkludera n\u00e4stan allt i en enda, monolitisk fil.<\/p>\n<p>Jag \u00e4r inte av det h\u00e4r tillv\u00e4gag\u00e5ngss\u00e4ttet eftersom det g\u00f6r det sv\u00e5rare att hitta var n\u00e5got finns i filen (\u00e5tminstone om du \u00e4r n\u00e5gon som precis kommer in i ett projekt).<\/p>\n<p>F\u00f6r det \u00e4ndam\u00e5let \u00e4r det de h\u00e4r sakerna jag brukar g\u00f6ra.<\/p>\n<ol>\n<li><strong>Separata \u00e5tg\u00e4rder och filter<\/strong>. Vanligtvis tar jag alla \u00e5tg\u00e4rder och placerar dem i en fil och jag tar alla filter och placerar dem i en annan fil. Det \u00e4r ocks\u00e5 m\u00f6jligt att ytterligare separera dessa filer i underkataloger (om inte namnomr\u00e5den ocks\u00e5) baserat p\u00e5 deras fokusomr\u00e5den. Till exempel kan alla \u00e5tg\u00e4rder relaterade till administrationsomr\u00e5det g\u00e5 i en <strong>admin-<\/strong> underkatalog.<\/li>\n<li><strong>Skriv en fels\u00f6kningsfil<\/strong>. Jag inkluderar normalt ett enkelt fels\u00f6kningsskript i ett plugin s\u00e5 att jag enkelt kan \u00e5terge fels\u00f6kningsinformation p\u00e5 sk\u00e4rmen, skriva till fels\u00f6kningsloggfilen eller skriva till b\u00e5da. Detta kan vara en bekv\u00e4mlighet om inte annat, men det hj\u00e4lper till att ge ett s\u00e4tt att enkelt se vad som h\u00e4nder utan att beh\u00f6va <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/anvaender-xdebug-med-valet-och-wordpress\/\" title=\"starta Xdebug\">starta Xdebug<\/a> och stega igenom koden (om det inte \u00e4r ett mer komplicerat problem).<\/li>\n<li><strong>Autoloader<\/strong>. Om du anv\u00e4nder procedurkod kanske du inte anv\u00e4nder <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/namnutrymmen-och-autoladdning-i-wordpress\/\" title=\"namnutrymmen\">namnutrymmen<\/a> alls, men i s\u00e5 fall inkluderar jag \u00e4ven en autoloader som jag har skrivit f\u00f6r att g\u00f6ra det l\u00e4ttare att automatiskt inkludera filer. Detta \u00e4r annorlunda \u00e4n autoloadern <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/kompositoer-foer-wordpress-del-1\/\" title=\"\u00e4n vad Composer genererar\">\u00e4n vad Composer genererar<\/a>, men det g\u00f6r fortfarande samma sak.<\/li>\n<\/ol>\n<p>Uppenbarligen \u00e4r det inget komplicerat med ovanst\u00e5ende rekommendationer. Faktum \u00e4r att jag skulle s\u00e4ga n\u00e5got av ovanst\u00e5ende, s\u00e4rskilt det f\u00f6rsta steget kan r\u00e4cka l\u00e5ngt f\u00f6r att f\u00f6rb\u00e4ttra hanterbarheten av procedurkod.<\/p>\n<h2>Huvudinsticksfilen<\/h2>\n<p>Om du v\u00e4ljer att g\u00f6ra allt ovanst\u00e5ende b\u00f6r den slutliga versionen av pluginens bootstrap-fil vara riktigt enkel. I sj\u00e4lva verket kan det se ut som n\u00e5got s\u00e5 enkelt <a href=\"https:\/\/gist.github.com\/tommcfarlin\/777bb0180968134a3c40ebecb241d2ad\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">som detta<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name: Acme Plugin\n * Plugin URI:  https:\/\/acmeplugins.com\/acme\n * Description: This is the plugin description.\n * Version:     1.0.0\n * Author:      Acme Plugins Co.\n * Author URI:  https:\/\/acmeplugins.com\/acme\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\n * @since   1.0.0\n * @package Acme\n *\/\n\nnamespace Acme;\n\ndefined( 'WPINC') || die;\n\n\/\/ Include the custom autoloader.\nrequire_once __DIR__. '\/inc\/autoload.php';\n\n\/\/ Include action and filters.\nrequire_once __DIR__. '\/inc\/actions.php';\nrequire_once __DIR__. '\/inc\/filters.php';\n<\/code><\/pre>\n<p>\u00c5terigen, detta f\u00f6ruts\u00e4tter att du till\u00e4mpar alla tre rekommendationerna. Om inte, kan din implementering variera.<\/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>Hur jag skriver WordPress-plugins med procedurprogrammering kontra objektorienterad programmering och hur jag g\u00e5r tillv\u00e4ga f\u00f6r att organisera procedurkod.<\/p>\n","protected":false},"author":1,"featured_media":235594,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,922,724,868],"tags":[1173],"class_list":["post-230854","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-oevrig","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230854","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=230854"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230854\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235594"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}