{"id":229388,"date":"2022-11-17T10:05:00","date_gmt":"2022-11-17T07:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229388"},"modified":"2022-11-17T18:57:11","modified_gmt":"2022-11-17T15:57:11","slug":"programowanie-obiektowe-w-wordpress-analiza-czesc-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/programowanie-obiektowe-w-wordpress-analiza-czesc-2\/","title":{"rendered":"Programowanie obiektowe w WordPress: analiza, cz\u0119\u015b\u0107 2"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/programowanie-obiektowe-w-wordpress-analiza-czesc-1\/\" title=\"W pierwszym po\u015bcie z tej serii\">W pierwszym po\u015bcie z tej serii<\/a> opowiedzia\u0142em wszystko o tym, jak chcia\u0142em zaj\u0105\u0107 si\u0119 wprowadzeniem do programowania obiektowego w kontek\u015bcie WordPressa.<\/p>\n<p>Istnieje kilka \u015bwietnych zasob\u00f3w do programowania obiektowego, ale mog\u0105 one u\u017cywa\u0107 wymy\u015blonych przyk\u0142ad\u00f3w lub mog\u0105 dzia\u0142a\u0107 zbyt szybko dla tych, kt\u00f3rzy dopiero chc\u0105 zacz\u0105\u0107.<\/p>\n<p>Aby temu zapobiec, my\u015bl\u0119, \u017ce m\u00f3wienie o OOP w WordPressie zakotwicza nas w mocnych fundamentach i u\u017cywanie praktycznych przyk\u0142ad\u00f3w zawsze b\u0119dzie lepsze ni\u017c u\u017cywanie og\u00f3lnych przyk\u0142ad\u00f3w, kt\u00f3re s\u0105 trudne do przet\u0142umaczenia na domen\u0119, w kt\u00f3rej pracujemy.<\/p>\n<p>Dla tych, kt\u00f3rzy <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jeszcze nie do\u0142\u0105czyli<\/a> lub jeszcze nie nadrobili zaleg\u0142o\u015bci, pierwszy post dotyczy nast\u0119puj\u0105cych temat\u00f3w:<\/p>\n<ul>\n<li>Analiza obiektowa,<\/li>\n<li>Okre\u015blanie rzeczy, kt\u00f3re trzeba mie\u0107, a rzeczy, kt\u00f3re trzeba mie\u0107,<\/li>\n<li>I dlaczego jest to trudne?<\/li>\n<\/ul>\n<p>I od tego b\u0119dzie ten post.<\/p>\n<h2>Programowanie obiektowe: wi\u0119cej analiz<\/h2>\n<p>Wiem: je\u015bli chodzi o pisanie kodu, pierwsz\u0105 rzecz\u0105, kt\u00f3r\u0105 chcemy zrobi\u0107, jest usi\u0105\u015b\u0107 i zacz\u0105\u0107 pisa\u0107 kod. Co jest lepsze ni\u017c sprawi\u0107, by co\u015b si\u0119 wydarzy\u0142o na ekranie?<\/p>\n<p>A kiedy robisz to dla siebie, nie jest to a\u017c tak wielka sprawa, ale kiedy piszesz kod, b\u0119dzie to:<\/p>\n<ul>\n<li>utrzymywany przez zesp\u00f3\u0142 ludzi,<\/li>\n<li>na sprzeda\u017c,<\/li>\n<li>lub dla wszystkich powy\u017cszych<\/li>\n<\/ul>\n<p>To robi r\u00f3\u017cnic\u0119. Poniewa\u017c dobra analiza mo\u017ce prowadzi\u0107 do dobrej organizacji, kt\u00f3ra mo\u017ce prowadzi\u0107 do dobrej konserwacji.<\/p>\n<p>W przeciwnym razie skleisz co\u015b razem do wysy\u0142ki i nie b\u0119dzie si\u0119 to dobrze skalowa\u0107 z przysz\u0142ymi wersjami. I to jest co\u015b, o czym b\u0119dziemy szczeg\u00f3\u0142owo m\u00f3wi\u0107 w ca\u0142ej serii.<\/p>\n<p>Ale jaki jest dobry spos\u00f3b na podsumowanie dobrej analizy w trzech prostych krokach? Niekoniecznie jest to odpowied\u017a kuloodporna, ale staramy si\u0119 to robi\u0107, gdy pracujemy nad projektami:<\/p>\n<ol>\n<li>Upewnij si\u0119, \u017ce kod robi to, czego chce klient,<\/li>\n<li>Stosuj dobre praktyki obiektowe,<\/li>\n<li>D\u0105\u017c do projektu, kt\u00f3ry mo\u017cna konserwowa\u0107.<\/li>\n<\/ol>\n<p>Wszystko to brzmi dobrze w teorii, ale bez g\u0142\u0119bszego zag\u0142\u0119biania si\u0119 w ka\u017cd\u0105 z nich, sk\u0105d mamy wiedzie\u0107, czy robimy to dobrze? Innymi s\u0142owy, w tym miejscu cz\u0119sto znajdujemy ksi\u0105\u017cki, zasoby i inne narz\u0119dzia, kt\u00f3re utrudniaj\u0105 zostanie lepszym programist\u0105 zorientowanym obiektowo.<\/p>\n<p>W\u0142a\u015bnie tego chc\u0119 unikn\u0105\u0107, wi\u0119c zamierzam zag\u0142\u0119bi\u0107 si\u0119 w ka\u017cdy punkt nieco g\u0142\u0119biej.<\/p>\n<h3>1 Czego chce klient<\/h3>\n<p>Cz\u0119sto jest to jeden z najtrudniejszych aspekt\u00f3w ca\u0142ego projektu, poniewa\u017c my, jako programi\u015bci, m\u00f3wimy innym j\u0119zykiem klienta.<\/p>\n<p>Nie tylko cz\u0119sto u\u017cywaj\u0105 terminologii, kt\u00f3rej my by\u015bmy nie u\u017cywali, ale cz\u0119sto my\u015bl\u0105, \u017ce to, czego chc\u0105 na ekranie, jest najlepszym sposobem na zrobienie tego. To sprawia, \u017ce \u200b\u200bpr\u00f3ba ich poprawienia brzmi naprawd\u0119 protekcjonalnie i \u017ale, prawda?<\/p>\n<p>Mam na my\u015bli, wyobra\u017a sobie, \u017ce pr\u00f3bujesz powiedzie\u0107 komu\u015b, \u017ce wiesz, czego chcesz, a on ci\u0119 poprawia. Ostro\u017cne radzenie sobie z tym jest czym\u015b, co mo\u017ce zyska\u0107 wielk\u0105 relacyjn\u0105 sprawiedliwo\u015b\u0107, ale potrzeba pewnej ilo\u015bci czasu, aby \u201ewydoby\u0107&quot; to, czego naprawd\u0119 chc\u0105, w por\u00f3wnaniu z tym, co m\u00f3wi\u0105, \u017ce chc\u0105.<\/p>\n<p>Zag\u0142\u0119bimy si\u0119 w to bardziej w przysz\u0142ym po\u015bcie.<\/p>\n<h3>2 praktyki zorientowane na obiekt<\/h3>\n<p>Oczywi\u015bcie wynika to ze znajomo\u015bci dobrych praktyk obiektowych i to jest co\u015b, co zamierzam om\u00f3wi\u0107.<\/p>\n<p>Wiele os\u00f3b powie rzeczy u\u017cywaj\u0105c takich rzeczy jak:<\/p>\n<ul>\n<li>zasady SOLID,<\/li>\n<li>dziedzictwo,<\/li>\n<li>SUCHY kod,<\/li>\n<li>wstrzykiwanie zale\u017cno\u015bci,<\/li>\n<li>i tak dalej<\/li>\n<\/ul>\n<p>Wszystkie s\u0105 wa\u017cne dla przestrzegania dobrych praktyk zorientowanych obiektowo.<\/p>\n<p>I mo\u017ce nie jest to popularne powiedzenie, ale jestem przekonany, \u017ce pr\u00f3ba u\u017cywania wszystkich rzeczy przez ca\u0142y czas nie zawsze jest dobrym pomys\u0142em. Oznacza to, \u017ce zdecydowanie nie chcesz, aby kod powtarza\u0142 si\u0119 w ca\u0142ej bazie kodu, ale czy musisz mie\u0107 dziedziczenie w swojej bazie kodu?<\/p>\n<p>Nie.<\/p>\n<p>S\u0105 chwile, kiedy zasady powinny by\u0107 stosowane i kiedy mo\u017cna je zignorowa\u0107. Ale znajomo\u015b\u0107 ich, kiedy najlepiej je wykorzysta\u0107 i kiedy ich u\u017cy\u0107, jest kluczem do prawid\u0142owego stosowania tych praktyk.<\/p>\n<h3>3 \u0142atwy w utrzymaniu projekt<\/h3>\n<p>M\u00f3wi\u0105c najpro\u015bciej, stosowanie wzorc\u00f3w i zasad do oprogramowania podczas jego pisania znacznie u\u0142atwi jego u\u017cytkowanie i utrzymanie w przysz\u0142o\u015bci.<\/p>\n<p>Ale znowu jest to uzale\u017cnione od:<\/p>\n<ol>\n<li>pe\u0142ne zrozumienie czego chce klient,<\/li>\n<li>wiedz\u0105c, jakie praktyki istniej\u0105, kiedy je stosowa\u0107, a kiedy ich unika\u0107.<\/li>\n<\/ol>\n<p>Aby to wszystko zrobi\u0107, musimy przyjrze\u0107 si\u0119 ka\u017cdemu punktowi w jego kontek\u015bcie, zanim cofniemy si\u0119 o krok, aby spojrze\u0107 na szerszy obraz.<\/p>\n<h2>Czego chce klient?<\/h2>\n<p>Oczywi\u015bcie, je\u015bli chodzi o powy\u017csze trzy punkty, jest sporo do pokonania. Ale je\u015bli chcesz napisa\u0107 dobre, \u0142atwe w utrzymaniu oprogramowanie w ramach ekonomii WordPress, wa\u017cne jest, aby zrozumie\u0107, jak to wszystko do siebie pasuje.<\/p>\n<p>Wi\u0119c zamiast skaka\u0107 do przodu do pisania kodu lub do pracy nad projektem, nast\u0119pn\u0105 rzecz\u0105, kt\u00f3r\u0105 przyjrzymy si\u0119, jest to, jak wzi\u0105\u0107 to, czego chce klient, a nast\u0119pnie rozszyfrowa\u0107 to w zestawie wymaga\u0144, kt\u00f3re pozwol\u0105 nam stworzy\u0107 zestawienie pracy.<\/p>\n<p>W ten spos\u00f3b ostatecznie b\u0119dziemy mieli roboczy dokument tego, czego chce klient i co zamierzamy zbudowa\u0107, i wszyscy b\u0119dziemy na tej samej stronie.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f3wienie o programowaniu obiektowym w WordPressie zakotwicza nas na mocnych podstawach, a korzystanie z praktycznych przyk\u0142ad\u00f3w zawsze b\u0119dzie lepsze ni\u017c generyk\u00f3w.<\/p>\n","protected":false},"author":1,"featured_media":165340,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897],"tags":[1169],"class_list":["post-229388","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=229388"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/165340"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}