{"id":230962,"date":"2022-12-09T18:10:00","date_gmt":"2022-12-09T15:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230962"},"modified":"2022-12-09T18:41:30","modified_gmt":"2022-12-09T15:41:30","slug":"aelae-suunnittele-ratkaisua-liikaa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/aelae-suunnittele-ratkaisua-liikaa\/","title":{"rendered":"\u00c4l\u00e4 suunnittele ratkaisua liikaa"},"content":{"rendered":"\n<p>Jos kotoisin olio-taustasta tai yrit\u00e4t rakentaa kaikki ratkaisusi WordPressiin oliotekniikoilla, tulee hetki\u00e4, jolloin saattaa tuntua, ett\u00e4 osut naulaan vasaralla.<\/p>\n<p>Oletetaan esimerkiksi, ett\u00e4 joku tulee luoksesi ja tarvitsee mukautetun laajennuksen, joka toimii kolmannen osapuolen laajennuksen kanssa, mutta sen tarvitsee tehd\u00e4 vain yksi asia.<\/p>\n<p>Kannattaako k\u00e4ytt\u00e4\u00e4 aikaa k\u00e4ytt\u00f6liittym\u00e4n luomiseen <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/abstraktit-luokat-osa-2-abstraktit-luokat-ja-kaeyttoeliittymaet\/\" title=\",\">,<\/a><\/strong> mainitun rajapinnan toteuttamiseen konkreettisessa luokassa, <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-tyyppien-naekymien-ja-tilaajien-jaerjestaeminen\/\" title=\"tilaajien\">tilaajien<\/a><\/strong> asettamiseen, <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nopea-huomautus-yksikkoetestauskoodista-wordpress-projekteissa\/\" title=\"yksikk\u00f6testien kirjoittamiseen\">yksikk\u00f6testien kirjoittamiseen<\/a><\/strong> ja niin edelleen?<\/p>\n<p>N\u00e4en valituksen, mutta yleens\u00e4 sanon ei. Jos teht\u00e4vien sis\u00e4lt\u00f6 on sis\u00e4llytett\u00e4v\u00e4 tyyleihin tai JavaScript-tiedostoihin tai molempiin, niin miksi et luottaisi alkuper\u00e4isiin WordPress-sovellusliittymiin ja prosessiohjelmointiin?<\/p>\n<h2>\u00c4l\u00e4 ylisuunnittele<\/h2>\n<p>Oletetaan, ett\u00e4 luoksesi tulee potentiaalinen asiakas, joka:<\/p>\n<ul>\n<li>ty\u00f6skentelee eritt\u00e4in tiukalla budjetilla,<\/li>\n<li>siin\u00e4 on kolmannen osapuolen laajennus, joka ei sovi hyvin teemaan,<\/li>\n<li>tarvitsee vain kevytt\u00e4 muotoilua,<\/li>\n<li>ja h\u00e4nell\u00e4 on varat tehd\u00e4 sopimus sinulle ty\u00f6st\u00e4.<\/li>\n<\/ul>\n<p>Olettaen, ett\u00e4 kaikki yll\u00e4 oleva pit\u00e4\u00e4 paikkansa, sanoisin, ett\u00e4 ratkaisun l\u00e4pik\u00e4yminen n\u00e4ytt\u00e4\u00e4 riitt\u00e4v\u00e4n yksinkertaiselta, eik\u00f6? Meid\u00e4n on tarkastettava sivusto, jotta voimme:<\/p>\n<ul>\n<li>m\u00e4\u00e4ritt\u00e4\u00e4 v\u00e4rimaailman,<\/li>\n<li>l\u00f6yt\u00e4\u00e4 tarvittavat valitsimet CSS:\u00e4\u00e4 varten,<\/li>\n<li>aloita sitten laajennuksen rakentaminen.<\/li>\n<\/ul>\n<p>Nyt kun se tulee tekem\u00e4\u00e4n t\u00e4t\u00e4, yrit\u00e4n silti k\u00e4ytt\u00e4\u00e4 kourallista parhaita k\u00e4yt\u00e4nt\u00f6j\u00e4. Vaikka minulla on tapana olio-ohjelmointi, en aina k\u00e4yt\u00e4 sit\u00e4 enk\u00e4 suosittele sit\u00e4.<\/p>\n<p>Sen sijaan uskon, ett\u00e4 yksinkertaisen funktion tai funktiosarjan k\u00e4ytt\u00e4minen WordPress-sovellusliittym\u00e4\u00e4n koukussa menettelytavalla toimii hienosti. T\u00e4m\u00e4 ei kuitenkaan tarkoita, etteik\u00f6 meid\u00e4n pit\u00e4isi pyrki\u00e4 luomaan kiinte\u00e4\u00e4 tiedostojen organisointirakennetta, koska et koskaan tied\u00e4, milloin joudut palaamaan yll\u00e4pit\u00e4m\u00e4\u00e4n projektia.<\/p>\n<p>T\u00e4t\u00e4 varten teen tavallisesti seuraavasti:<\/p>\n<ul>\n<li>luo resurssihakemisto tyylitaulukoille ja JavaScriptille (molemmalle tai toiselle &#8211; sen mukaan, kumpi on tarpeen),<\/li>\n<li>luo <strong>src<\/strong> -hakemisto koodille, joka vastaa WordPressiin kytkemisest\u00e4,<\/li>\n<li>lis\u00e4\u00e4 tavallinen <strong>LICENSE-, README-<\/strong> ja plugin bootstrap -tiedosto.<\/li>\n<\/ul>\n<p>Tuloksena oleva hakemisto voi n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4:<\/p>\n<p>Sielt\u00e4 en edes vaivaudu automaattilataajaan. Sen sijaan sis\u00e4llyt\u00e4n tiedostot l\u00e4hdehakemistoon. Voit iteroida n\u00e4it\u00e4 tiedostoja ja tehd\u00e4 jotain <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8d4e8a93a673d86f44d39c6e2893530e#file-00-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4n kaltaista<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Acme Plugin Example\n *\n * @author    Tom McFarlin &lt;tom@pressware.co&gt;\n * @license   GPL-3.0+\n * @link      https:\/\/pressware.co\n * @since     1.0.0\n * @copyright 2018 Tom McFarlin\n *\n * @wordpress-plugin\n * Plugin Name: Acme Plugin Example\n * Description: Provides consistent styling across the site for certain elements.\n * Version:     1.0.0\n * Author:      Tom McFarlin\n * Author URI:  https:\/\/tommcfarlin.com\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\ninclude_once plugin_dir_path(__FILE__).'src\/AddStyles.php';\ninclude_once plugin_dir_path(__FILE__).'src\/AddScripts.php';\n<\/code><\/pre>\n<p>Mutta se saattaa riippua siit\u00e4, milloin ja mit\u00e4 teet.<\/p>\n<h2>T\u00e4m\u00e4 on liian yksinkertaista<\/h2>\n<p>Voi olla. T\u00e4ss\u00e4 on asia: Aina kun henkil\u00f6 juurtuu k\u00e4ytt\u00e4m\u00e4\u00e4n tietty\u00e4 ohjelmointiparadigmaa, h\u00e4n yritt\u00e4\u00e4 soveltaa sit\u00e4 kaikkialla ja yritt\u00e4\u00e4 tehd\u00e4 niin koko ajan.<\/p>\n<p>Ei kaikki, mutta monet. Itseni mukaan lukien.<\/p>\n<p>Ja kun huomaat suunnittelevasi jotain liikaa, miksi et ottaisi askelta taaksep\u00e4in ja yritt\u00e4isi tehd\u00e4 ty\u00f6m\u00e4\u00e4r\u00e4st\u00e4si hieman yksinkertaisempaa?<\/p>\n<p>Ongelma on edelleen ratkaistu, ja se on tehty tavalla, jolla on huomattavasti v\u00e4hemm\u00e4n yleiskustannuksia.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jos teht\u00e4v\u00e4n ydin on sis\u00e4llytett\u00e4v\u00e4 tyyleihin tai JavaScript-tiedostoihin tai molempiin, \u00e4l\u00e4 suunnittele ratkaisua liikaa.<\/p>\n","protected":false},"author":1,"featured_media":236233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,895,803,864],"tags":[1166],"class_list":["post-230962","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=230962"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230962\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236233"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=230962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=230962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=230962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}