{"id":230062,"date":"2022-11-17T18:56:00","date_gmt":"2022-11-17T15:56:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230062"},"modified":"2022-11-09T19:55:49","modified_gmt":"2022-11-09T16:55:49","slug":"olio-ohjelmointi-wordpressissae-analyysi-osa-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/olio-ohjelmointi-wordpressissae-analyysi-osa-1\/","title":{"rendered":"Olio-ohjelmointi WordPressiss\u00e4: analyysi, osa 1"},"content":{"rendered":"\n<p>Kun aloin tarjota <a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4senyyksi\u00e4<\/a> t\u00e4ll\u00e4 sivustolla, tiesin, ett\u00e4 ensimm\u00e4inen asia, jonka halusin k\u00e4sitell\u00e4, oli johdatus olio-ohjelmointiin.<\/p>\n<p>Se n\u00e4ytt\u00e4\u00e4 kiinnostavan useimmille WordPressill\u00e4 ty\u00f6skenteleville ihmisille, mutta ongelmana on, ett\u00e4 se joko k\u00e4\u00e4nnytt\u00e4\u00e4 monet ihmiset pois tai tuottaa huonoja tuloksia:<\/p>\n<p>Olio-ohjelmointi voi monimutkaista nopeasti. Ja t\u00e4m\u00e4 demotivoi.<\/p>\n<p>Tarkoitan seuraavaa: Oletetaan, ett\u00e4 olet WordPress-kehitt\u00e4j\u00e4, joka alkaa tutkia olio-ohjelmointia. Se alkaa puhua luokista, rakentajista ja funktioista, ja kaikki n\u00e4ytt\u00e4\u00e4 hyv\u00e4lt\u00e4.<\/p>\n<p>Mutta sitten se menee nopeasti:<\/p>\n<ul>\n<li>yksityiset ja suojatut menetelm\u00e4t,<\/li>\n<li>perint\u00f6,<\/li>\n<li>polymorfismi,<\/li>\n<li>suunnittelumalleja,<\/li>\n<li>riippuvuusruiske,<\/li>\n<li>arkistot,<\/li>\n<li>ja niin edelleen.<\/li>\n<\/ul>\n<p>Lumipalloja, eik\u00f6 niin? Eik\u00e4 niin sen todellakaan tarvitse olla, mutta kunnollista esittely\u00e4 on vaikea l\u00f6yt\u00e4\u00e4 <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">muutamaa resurssia<\/a> lukuun ottamatta .<\/p>\n<p>Kaiken t\u00e4m\u00e4n j\u00e4lkeen (ja toimii taustana matkalleni), halusin luoda sarjan sis\u00e4lt\u00f6\u00e4 niille, jotka:<\/p>\n<ul>\n<li>olet aidosti kiinnostunut olio-ohjelmoinnista,<\/li>\n<li>en ole varma mist\u00e4 aloittaa,<\/li>\n<li>haluavat kehitt\u00e4\u00e4 taitojaan,<\/li>\n<li>haluat aloittaa nollasta ilman, ett\u00e4 se laajenee liian nopeasti monimutkaisempaan materiaaliin.<\/li>\n<\/ul>\n<p>Ja siit\u00e4 aloitan t\u00e4n\u00e4\u00e4n ja ensimm\u00e4isess\u00e4 <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4senille<\/a> suunnatussa vakavassa suunnitelmassa. Kaiken t\u00e4m\u00e4n j\u00e4lkeen aloitetaan.<\/p>\n<p>Tarkemmin sanottuna, aloitetaan puhua olio-ohjelmoinnista, analysoinnista, suunnittelusta ja siit\u00e4, miksi h\u00e4nen pit\u00e4isi aloittaa siit\u00e4.<\/p>\n<h2>Olio-ohjelmointi: Analyysi<\/h2>\n<p>Mit\u00e4 tulee koodin kirjoittamiseen, t\u00e4ll\u00e4 hetkell\u00e4 on kolme suosittua tapaa tehd\u00e4 se:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">toimiva<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">menettelyllinen<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oliosuuntautunut<\/a>.<\/li>\n<\/ul>\n<p>Aina kun ty\u00f6skentelemme ja luemme WordPress-koodia, luet prosessikoodin ja oliokoodin yhdistelm\u00e4\u00e4.<\/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=\"Olio-ohjelmointi WordPressiss\u00e4: analyysi, osa 1\" ><\/a><\/p>\n<p>T\u00e4h\u00e4n on joitakin syit\u00e4, mutta se ei kuulu keskustelumme piiriin.<\/p>\n<p>T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 WordPress on rakennettu molemmilla ja koska tietyt WordPress-kehityksen osat voidaan kirjoittaa prosessikoodilla, kuten laajennukset ja teemat, ja toiset vaativat olio-kehityst\u00e4, kuten <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">widgetej\u00e4<\/a>.<\/p>\n<h3>Analyysi ja suunnittelu<\/h3>\n<p>Niin usein ensimm\u00e4inen asia, jonka haluamme tehd\u00e4 kehitt\u00e4jin\u00e4 (aloittavina tai ei), on ryhty\u00e4 v\u00e4litt\u00f6m\u00e4sti koodin kirjoittamiseen. Min\u00e4kin saan. Se on hauskaa. Meill\u00e4 on idea, haluamme her\u00e4tt\u00e4\u00e4 sen henkiin, haluamme alkaa k\u00e4ytt\u00e4\u00e4 sit\u00e4 ja haluamme n\u00e4ytt\u00e4\u00e4 sen muille ihmisille.<\/p>\n<p>T\u00e4ss\u00e4 on kuitenkin ongelma sen tekemisess\u00e4: Usein ohitamme koodin kirjoittamisen yritt\u00e4\u00e4ksemme saada projektin tekem\u00e4\u00e4n mit\u00e4 haluamme sen tekev\u00e4n.<\/p>\n<p>Jos t\u00e4m\u00e4 on yksinkertainen (ja tarkoitan todella yksinkertaista) projektia, se ei ole niin iso juttu. Rehellisesti sanottuna olen tehnyt sen (ja <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> on todiste siit\u00e4). Mutta mit\u00e4 tulee <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Presswaren ty\u00f6h\u00f6n<\/a> ; se on eri tarina.<\/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=\"Olio-ohjelmointi WordPressiss\u00e4: analyysi, osa 1\" ><\/a><\/p>\n<p>Kun kyse on t\u00e4llaisista projekteista, haluamme tehd\u00e4 hieman analyysi\u00e4 ja suunnittelua ennen koodin kirjoittamista.<\/p>\n<p>Mik\u00e4 her\u00e4tt\u00e4\u00e4 kysymyksen, mit\u00e4 on olioanalyysi ja suunnittelu?<\/p>\n<h4>Analyysi<\/h4>\n<p>Lyhyesti sanottuna, ajattele asiaa n\u00e4in:<\/p>\n<p>Analyysi on prosessi, jossa otetaan idea, joka asiakkaalla on tai sinulla on, ja kaivataan, mit\u00e4 todella tarvitsee rakentaa.<\/p>\n<p>T\u00e4m\u00e4 voi auttaa sinua m\u00e4\u00e4ritt\u00e4m\u00e4\u00e4n, mik\u00e4 on sovelluksen salaisuus ja mik\u00e4 ei ole v\u00e4ltt\u00e4m\u00e4t\u00f6nt\u00e4 sovelluksen ensimm\u00e4isess\u00e4 versiossa. Tykk\u00e4\u00e4n merkit\u00e4 n\u00e4m\u00e4 niin pitk\u00e4lle kuin &quot;pakolliset&quot; ja mitk\u00e4 ovat &quot;kiva-to-have&quot;.<\/p>\n<p>Hyv\u00e4 nyrkkis\u00e4\u00e4nt\u00f6 on t\u00e4m\u00e4:<\/p>\n<ul>\n<li><strong>must-have<\/strong> ovat asioita, jotka ovat sovelluksen ydin, ja niiden on ment\u00e4v\u00e4 projektin ensimm\u00e4iseen iteraatioon,<\/li>\n<li><strong>mukavat<\/strong> tavarat ovat asioita, joita voimme lopulta rakentaa siihen<\/li>\n<\/ul>\n<p>Viime k\u00e4dess\u00e4 t\u00e4m\u00e4 auttaa meit\u00e4 ty\u00f6skentelem\u00e4\u00e4n kohti vahvaa ensimm\u00e4ist\u00e4 versiota asiakkaalle. Ehk\u00e4 yksi esimerkki on WordPressille:<\/p>\n<ul>\n<li>Tarviiko WordPressin ensimm\u00e4isess\u00e4 versiossa liit\u00e4nn\u00e4issovellusliittym\u00e4 vai tarvittiinko siin\u00e4 vain ihmisten mahdollisuus kirjoittaa viestej\u00e4 ja julkaista niit\u00e4 verkossa?<\/li>\n<\/ul>\n<p>Jos olet rakentamassa alustaa bloggaamiseen, t\u00e4ytyyk\u00f6 sen olla laajennettavissa ensimm\u00e4isest\u00e4 versiosta l\u00e4htien? T\u00e4m\u00e4 ei ole muuta kuin esimerkki, mutta ymm\u00e4rr\u00e4tte idean.<\/p>\n<h4>Mik\u00e4 tekee analyysist\u00e4 niin vaikeaa?<\/h4>\n<p>Luulen, ett\u00e4 se liittyy usein henkil\u00f6ihin.<\/p>\n<p>Esimerkiksi me ohjelmoijat ajattelemme, ett\u00e4 projektin tulee aina tehd\u00e4 mit\u00e4 asiakas haluaa. Totuus on, ett\u00e4 n\u00e4in ei aina ole.<\/p>\n<p>Tarkoitan, ett\u00e4 se saattaa lopulta olla, mutta projektin ensimm\u00e4isen version ei v\u00e4ltt\u00e4m\u00e4tt\u00e4 tarvitse olla sellainen.<\/p>\n<p>Lis\u00e4ksi yksi olio-ohjelmoinnin periaatteista on, ett\u00e4 emme kirjoita paljon p\u00e4\u00e4llekk\u00e4ist\u00e4 koodia. Mutta se voi olla eritt\u00e4in vaikeaa tehd\u00e4, jos analyysi\u00e4 ei ole tehty kunnolla.<\/p>\n<p>Lopuksi kokeneemmat sanovat, ett\u00e4 hyv\u00e4ss\u00e4 ohjelmistossa k\u00e4ytet\u00e4\u00e4n hyv\u00e4ksi todettuja ja oikeita periaatteita \u2013 olipa kyseess\u00e4 suunnittelumalleja tai ei \u2013 mutta ett\u00e4 sit\u00e4 on helppo muuttaa ajan my\u00f6t\u00e4. Se tietyss\u00e4 mieless\u00e4 kasvaa orgaanisesti.<\/p>\n<h2>Mit\u00e4 meid\u00e4n on teht\u00e4v\u00e4?<\/h2>\n<p>Seuraavassa artikkelissa aion puhua kolmesta asiasta, joita voimme tehd\u00e4 kehitt\u00e4jin\u00e4 varmistaaksemme, ett\u00e4 itsellemme tai muille rakentamamme ohjelmisto vie meid\u00e4t oikeaan suuntaan.<\/p>\n<p>En sano, ett\u00e4 se on hopealuodi, koska en usko sen olevan olemassa, mutta sanon, ett\u00e4 se on melko vahva l\u00e4hestymistapa, jota olen l\u00f6yt\u00e4nyt muiden k\u00e4ytett\u00e4v\u00e4ksi ja itselleni ja joka johtaa melko hyv\u00e4\u00e4n suuntaan. olio-analyysin kannalta.<\/p>\n<p>T\u00e4m\u00e4 vie meid\u00e4t lopulta suunnitteluun. Mutta emme ole viel\u00e4 siell\u00e4.<\/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>Olio-ohjelmointi WordPressiss\u00e4, puhumattakaan mist\u00e4 tahansa alustasta, voi olla pelottava teht\u00e4v\u00e4. Mutta haluan aloittaa nollasta ja siirty\u00e4 sielt\u00e4 eteenp\u00e4in.<\/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":[719,895,834,843],"tags":[1166],"class_list":["post-230062","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opas-aloittelijoille","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230062","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=230062"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230062\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=230062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=230062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=230062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}