{"id":228642,"date":"2022-10-25T10:41:00","date_gmt":"2022-10-25T07:41:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228642"},"modified":"2022-11-09T03:35:51","modified_gmt":"2022-11-09T00:35:51","slug":"mitme-objekti-andmete-kirjutamine-kuidas-seda-vaeltida","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/mitme-objekti-andmete-kirjutamine-kuidas-seda-vaeltida\/","title":{"rendered":"Mitme objekti andmete kirjutamine: kuidas seda v\u00e4ltida"},"content":{"rendered":"\n<p>Teate neid aegu, kui t\u00f6\u00f6tate programmi kallal ja teie koodis on m\u00f5ned kohad, mis olenevalt n\u00f5uetest v\u00f5i mingil moel ilmnevast veast on otseselt seotud sellega, et teil on andmeid kirjutamas mitu objekti. samasse andmesalve? See pole hea.<\/p>\n<p>See on kohutav viis postituse alustamiseks. Las ma proovin seda uuesti.<\/p>\n<h2>Mitu objekti andmete kirjutamine<\/h2>\n<p>Oletame, et t\u00f6\u00f6tate programmi kallal ja \u00fcks asi, mida kood teeb, on m\u00f5nes andmebaasis oleva loenduri v\u00e4rskendamine, et j\u00e4lgida, kui palju muudatusi on l\u00fchikese aja jooksul toimunud.<\/p>\n<p>Probleem: teil on koodis mitu kohta, mis seda loendurit v\u00e4rskendavad.<\/p>\n<p>Mitme objekti andmete kirjutamine (juhul, kui mu k\u00e4ekiri on nii loetamatu, kui paistab).<\/p>\n<p>Ma arvan, et paljud meist ei kavatsegi sellist koodi kirjutada, kuid seda juhtub ja kui see juhtub, tekivad k\u00f5ik need k\u00f5rvalm\u00f5jud, mis lihtsalt tekitavad igasuguseid tobedaid k\u00e4itumisi. (Ma ei tea selle ametlikku akadeemilist terminit \u2013 ja ma ei pea silmas <a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">KUIVAT<\/a> \u2013, kuid mulle sobib selle postituse puhul \u201efunky k\u00e4itumine&quot;.)<\/p>\n<p>Teame intuitiivselt, et meil peaks olema \u00fcks koht, kus see k\u00f5ik toimub, v\u00e4lised tegurid \u2013 olgu see siis ulatus, meiepoolne arusaamatus n\u00f5uetest aru saada v\u00f5i mis iganes \u2013 tekitavad kehva kodeerimise.<\/p>\n<p>Seega on meie s\u00fcsteemis k\u00f5ik need <a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-postituste-tueuebid-abstraktsioon-ueksuste-jaoks\/\" title=\"olemid\">olemid<\/a>, millest iga\u00fcks r\u00e4\u00e4gib meie andmebaasi \u00fche punktiga (v\u00f5i mis tahes andmesalvega, mis teile meeldib), kuid \u00fckski neist ei tea, et teised nendega r\u00e4\u00e4givad.<\/p>\n<h2>Seadke piirid<\/h2>\n<p>V\u00f5ime proovida selle vastu v\u00f5idelda tingimustingimuste ja millegi muuga, kuid me muudame asja ainult hullemaks. Mida me siis tegema peaksime?<\/p>\n<p>Ma tean, et nagu paljude asjade puhul programmeerimises, on selle lahendamiseks mitmeid viise, kuid v\u00f5ib-olla on \u00fcks esimesi \u00fcmberkujundamisk\u00e4ike andmesalve v\u00e4rskenduste v\u00e4ljastamise eest vastutav klass.<\/p>\n<p>Nii saame \u00fclaltoodud illustratsioonist minna millekski selliseks:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167733-61e7a7cc3a1aa.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-167733-61e7a7cc3a1aa.png\" alt=\"Mitme objekti andmete kirjutamine: kuidas seda v\u00e4ltida\" ><\/a><\/p>\n<p>Mitme objekti andmete kirjutamine: saatke need omamoodi vahendajale.<\/p>\n<p>See t\u00e4hendab, et k\u00f5ik olemid on selle objekti ja selle objektiga \u00fchenduses \u2013 ja ainult see objekt saab andmeid lugeda ja andmebaasi kirjutada.<\/p>\n<p>On m\u00f5ned <a href=\"https:\/\/sourcemaking.com\/design_patterns\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">disainimustrid<\/a>, mis sobiksid selle konkreetse probleemiga, kuid see ei kuulu selle postituse ulatusse. Selle asemel \u00fcritan \u00f6elda, et kui leiate end silmitsi j\u00e4rgmise probleemiga:<\/p>\n<ul>\n<li>Olemid kirjutavad andmeid andmesalve,<\/li>\n<li>Mitu \u00fcksust teevad seda,<\/li>\n<li>Ja see tekitab soovimatuid tagaj\u00e4rgi,<\/li>\n<\/ul>\n<p>Seej\u00e4rel proovige luua klass v\u00f5i klassikomplekt, mis vastutab rangelt andmete lugemise ja kirjutamise eest. Laske teabel l\u00e4bida ainult need klassid, mitte lasta andmetega manipuleerida mitmel klassil.<\/p>\n<p>See muudab testimise lihtsamaks, silumise ja l\u00f5ppkokkuv\u00f5ttes h\u00f5lbustab lugemist.<\/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>Kui mitu objekti kirjutavad andmeid \u00fchte andmesalve mitmes kohas, on negatiivsed k\u00f5rvalm\u00f5jud. Siin on viis selle parandamiseks.<\/p>\n","protected":false},"author":1,"featured_media":221243,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718],"tags":[1165],"class_list":["post-228642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=228642"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/228642\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/221243"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=228642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=228642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=228642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}