{"id":1170,"date":"2019-04-19T13:42:36","date_gmt":"2019-04-19T12:42:36","guid":{"rendered":"http:\/\/piatkosia.k4be.pl\/wordpress\/?p=1170"},"modified":"2019-04-20T14:29:28","modified_gmt":"2019-04-20T13:29:28","slug":"czytaj-komunikaty-czyli-dlaczego-warto-patrzec-automatom-ide-na-rece","status":"publish","type":"post","link":"https:\/\/piatkosia.k4be.pl\/wordpress\/2019\/04\/19\/czytaj-komunikaty-czyli-dlaczego-warto-patrzec-automatom-ide-na-rece\/","title":{"rendered":"&#8222;Czytaj komunikaty&#8221; &#8211; czyli dlaczego warto patrze\u0107 automatom IDE na r\u0119ce."},"content":{"rendered":"<p style=\"text-align: justify;\">Zaczn\u0119 mo\u017ce od opisania problemu jaki mia\u0142am wczoraj w pracy. \u0141aduj\u0119 sobie z bazki dane (acz ich \u017ar\u00f3d\u0142o jest w tym momencie tak istotne jak sk\u0142ad obecnego parlamentu, czyli wcale), aby je po do\u015b\u0107 banalnej obr\u00f3bce pokaza\u0107 u\u017cytkownikowi.<\/p>\n\n\n<!--more-->\n\n\n<p style=\"text-align: justify;\">Dane wynikowe l\u0105duj\u0105 do ObservableCollection podbindowanej do XamDataGrida. Okazuje si\u0119 jednak, \u017ce je\u017celi co\u015b wrzuc\u0119 do tej kolekcji w konstruktorze, to wszystko gra, ale jak wrzuc\u0119 j\u0105 w OnNavigatedTo lub potem, to elementy trafiaj\u0105 do kolekcji, ale nie pokazuj\u0105 si\u0119 w widoku, mimo \u017ce w analogicznym widoku (\u017ceby nie powiedzie\u0107 \u2013 \u017cywcem copy-paste z innymi nazwami p\u00f3l) wszystko dzia\u0142a. No ale tutaj nie dzia\u0142a. Standardowo i po swojemu debuguj\u0119 wszystko i wydaje si\u0119 \u017ce wszystko gdzie mog\u0119 wskoczy\u0107 dzia\u0142a jak potrzebuj\u0119, wyzywam dev\u00f3w infragistica od tempych ch* jak w kapitanie bombie, skraj wytrzyma\u0142o\u015bci nerwowej sko\u0144czy\u0142 mi si\u0119 jak\u0105\u015b godzin\u0119 temu, uderzam do szefa. Szefu \u2013 wybitny specjalista kt\u00f3ry programuje w dotnecie ju\u017c trzecie stulecie, a w wpfie ze dwie dekady, sp\u0119dzaj\u0105c ze mn\u0105 nad problemem kolejne 4 godziny i sprawdzaj\u0105c po swojemu uznaje \u017ce problem jest ciekawy i \u017ce mam da\u0107 mu zna\u0107 jak co\u015b znajd\u0119, bo on tu nic nie widzi. Wychodz\u0119 po\u015bpiesznie z pracy, totalnie za\u0142amana. To chyba musi by\u0107 niewykonywalne, skoro si\u0119 nie uda\u0142o nawet Szefowi, kt\u00f3ry potrafi kilkugodzinny problem w kilka sekund rozwi\u0105za\u0107.<\/p>\n<p style=\"text-align: justify;\">Nazajutrz sp\u0119dzam nad problemem kolejne, nie wiem 4 godziny. Czyli dni\u00f3wka w plecy na \u201ebo si\u0119 nie od\u015bwie\u017ca\u201d (wtedy my\u015bla\u0142am jeszcze \u017ce problem musi by\u0107 gdzie\u015b w mechanizmie od\u015bwie\u017cania lub rysowania kontrolki, bo przecie\u017c dane s\u0105) po czym rozwi\u0105zuj\u0119 problem zastanawiaj\u0105c si\u0119 czy plu\u0107 sobie w brod\u0119 \u017ce doprowadzi\u0142am do takiej sytuacji, czy dziwi\u0105c si\u0119 \u017ce taka pierd\u00f3\u0142a mi tyle czasu zaj\u0119\u0142a. Diabe\u0142 usinga ogonem przykry\u0142.<\/p>\n<p style=\"text-align: justify;\">Tych z syndromem tltr zapraszam na koniec wpisu gdzie jest podane rozwi\u0105zanie problemu, a pozosta\u0142ych zapraszam w dalsz\u0105 opowie\u015b\u0107.<\/p>\n<p>Cofnijmy si\u0119 ze dwie godziny wcze\u015bniej, zanim ten problem wyst\u0105pi\u0142. Jak m\u00f3wi\u0142am, podkrad\u0142am sobie kawa\u0142ek widoku, uprzednio kopiuj\u0105c go do vs code, robi\u0105c rename\u2019y, duplikuj\u0105c co trzeba, usuwaj\u0105c co trzeba. Skopiowa\u0142am do VS, pogenerowa\u0142am z palca nieistniej\u0105ce propertiesy\u2026 no ale kurka w wielu miejscach mi si\u0119 pogenerowa\u0142o object, a ja mimo wszystko no chcia\u0142am mie\u0107 ten w\u0142a\u015bciwy typ \u2013 chocia\u017cby po to, aby mi powype\u0142nia\u0142 kolumny prawid\u0142owo (a dwa \u017ce nie po to mam silnie typowalny j\u0119zyk by wszystko trzyma\u0107 w object czy dynamic). No to wzi\u0119\u0142am pierwsz\u0105 lepsz\u0105 propert\u0119 z ObservableCollection, przeklei\u0142am do VS Code, zmieni\u0142am nazw\u0119, wklei\u0142am do kodu tyle razy ile mi by\u0142o potrzeba zmieniaj\u0105c nazwy propert i field\u00f3w na odpowiednie i \u2026.<br>Tu mi z nied\u017awiedzi\u0105 przys\u0142ug\u0105 przyszed\u0142 podpowiadacz, pokazuj\u0105c mi to:<\/p>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"801\" height=\"240\" src=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/nie_poszlo.png\" alt=\"\" class=\"wp-image-1173\" srcset=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/nie_poszlo.png 801w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/nie_poszlo-300x90.png 300w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/nie_poszlo-768x230.png 768w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><figcaption>Multiple choices ale si\u0119 klikn\u0119\u0142o<\/figcaption><\/figure>\n\n\n<p style=\"text-align: justify;\">Tak\u017ce klikn\u0119\u0142am i zaufa\u0142am \u017ce &#8222;default&#8221; by\u0142 dobry. Kij \u017ce pierwszy raz chyba widz\u0119 namespace na oczy. Mo\u017ce nigdy nie zwr\u00f3ci\u0142am uwagi. No traf chcia\u0142 \u017ce kole\u015b sortuje alfabetycznie nie premiuj\u0105c najcz\u0119\u015bciej u\u017cywanych. R jest przed S. Bo jak bym rozwin\u0119\u0142a to ju\u017c bym podejrzewam wybra\u0142a poprawny;)&nbsp; To znaczy (uwaga, spoiler) ten na \u017c\u00f3\u0142to.<\/p>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"196\" src=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/moglam_kliknac.png\" alt=\"\" class=\"wp-image-1174\" srcset=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/moglam_kliknac.png 554w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/moglam_kliknac-300x106.png 300w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><figcaption>Mnie wybierz. Mnieee!<br><\/figcaption><\/figure>\n\n\n<p style=\"text-align: justify;\">I jakbym tak zrobi\u0142a, to problem by w og\u00f3le nie wyst\u0105pi\u0142.<\/p>\n<p style=\"text-align: justify;\">No ale wyst\u0105pi\u0142. Jak wi\u0119c znalaz\u0142am rozwi\u0105zanie? Uzna\u0142am, \u017ce co\u015b musia\u0142am pomin\u0105\u0107 wi\u0119c patrz\u0119 na podobny widok do mojego i por\u00f3wnuj\u0119 namespace\u2019y. No i by\u0142 tylko jeden taki, kt\u00f3rego nie mia\u0142am u siebie, a w tamtym jest.<\/p>\n<p style=\"text-align: justify;\">By\u0142 to owy <strong>System.Collections.ObjectModel<\/strong> wi\u0119c go doda\u0142am. Grzecznie z palca wpisa\u0142am gdzie\u015b u g\u00f3ry using System.Collections.ObjectModel; i moim oczom ukaza\u0142o si\u0119 to. <\/p>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"81\" src=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/B\u0142\u0119dy-1024x81.png\" alt=\"\" class=\"wp-image-1176\" srcset=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/B\u0142\u0119dy-1024x81.png 1024w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/B\u0142\u0119dy-300x24.png 300w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/B\u0142\u0119dy-768x61.png 768w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/B\u0142\u0119dy.png 1141w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>No we\u017a si\u0119 zdecyduj, bo gdzie kucharek sze\u015b\u0107 tam b\u0142\u0119dy kompilacji<\/figcaption><\/figure>\n\n\n<p style=\"text-align: justify;\">No wi\u0119c wywalam tego using Remotion.Linq.Collections;, kompiluj\u0119, odpalam, dzia\u0142a. Odta\u0144czam taniec zwyci\u0119stwa, robi\u0119 sobie herbat\u0119 i bior\u0119 si\u0119 za dopisywanie kolejnych rzeczy.<\/p>\n<p style=\"text-align: justify;\">Co powinno mnie zaniepokoi\u0107 a zosta\u0142o olane wcze\u015bniej?<\/p>\n<p style=\"text-align: justify;\">Hmm, tu dochodzimy do tytu\u0142owego \u201eczytaj komunikaty\u201d. (Tak Nikow- jak zawsze masz racj\u0119 z tym swoim &#8222;bo ty komunikat\u00f3w nie czytasz&#8221;) Bo gdybym mia\u0142a nawyk ich czytania (a wyzby\u0142am si\u0119 go gdzie\u015b na studiach- czuj\u0105c si\u0119 zbyt pewnie) to ju\u017c wcze\u015bniej bym zauwa\u017cy\u0142a r\u00f3\u017cnic\u0119- przecie\u017c te bulby mi si\u0119 wy\u015bwietla\u0142y.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"145\" src=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/porownanie-1024x145.png\" alt=\"\" class=\"wp-image-1177\" srcset=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/porownanie-1024x145.png 1024w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/porownanie-300x42.png 300w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/porownanie-768x108.png 768w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/04\/porownanie.png 1777w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>No ale kto to w og\u00f3le czyta? No przecie\u017c te zmienne s\u0105 takie same;) A ju\u017c na pewno ich typy. Diabe\u0142 tkwi w szczeg\u00f3\u0142ach.<\/figcaption><\/figure>\n\n\n<p style=\"text-align: justify;\">Patrzy\u0142am na nie nie\u015bwiadomie setki razy w trakcie analizy \u2013 no ale nie na tych szczeg\u00f3\u0142ach si\u0119 skupia\u0142am co trzeba i \u2026 mog\u0119 mie\u0107 co\u015b w polu widzenia a zupe\u0142nie tego nie dostrzec \u2013 bardziej mnie interesowa\u0142a aktualna warto\u015b\u0107 zmiennej \u2013 ni\u017c jej rzeczywisty typ- jakby to nie mia\u0142o znaczenia.<\/p>\n<p style=\"text-align: justify;\">Tak\u017ce t\u0119pa blondynko \u2013 skoro od 3 roku \u017cycia umiesz czyta\u0107, to znaczy \u017ce w wieku prawie 30 tym bardziej. CZYTAJ i sprawdzaj co ci wygenerowa\u0142 automat, bo czasami generuje bzdury. Przecie\u017c po zacommitowaniu kodu pojawi si\u0119 przy nim w chwili blame\u2019a twoje nazwisko, a wi\u0119c Ty za to odpowiadasz, nie automat, nie tw\u00f3rcy Visual Studio, nie tw\u00f3rcy Resharpera. Ty. Nie p\u0142ac\u0105 ci za bycie ma\u0142p\u0105 i kodzenie na pa\u0142\u0119.<\/p>\n<p style=\"text-align: justify;\">Podsumowuj\u0105c, zaj\u0119\u0142o mi 8 godzin doj\u015bcie do tego, by zmieni\u0107 using Remotion.Linq.Collections; na bardziej znany using System.Collections.ObjectModel; Dzia\u0142a? No jak w mord\u0119 strzeli\u0142. Dzia\u0142a!<\/p>\n<p>I to by by\u0142o na tyle. Dzi\u0119kuj\u0119 za uwag\u0119.<\/p>","protected":false},"excerpt":{"rendered":"<p>Czytaj komunikaty i bulby, mo\u017ce ci to oszcz\u0119dzi\u0107 czas po\u015bwi\u0119cony na debugowanie.<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/piatkosia.k4be.pl\/wordpress\/2019\/04\/19\/czytaj-komunikaty-czyli-dlaczego-warto-patrzec-automatom-ide-na-rece\/\">Lecim dalej<span class=\"screen-reader-text\">&#8222;Czytaj komunikaty&#8221; &#8211; czyli dlaczego warto patrze\u0107 automatom IDE na r\u0119ce.<\/span> <i class=\"fas fa-angle-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,83,645,180,49,247,143],"tags":[620,142,619,210],"class_list":["post-1170","post","type-post","status-publish","format-standard","hentry","category-bez-kategorii","category-c_sharp","category-gmtl","category-libs","category-programowanie","category-visual-studio","category-wpf","tag-bledy","tag-csharp","tag-gmtl","tag-programowanie","entry"],"_links":{"self":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=1170"}],"version-history":[{"count":7,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1170\/revisions"}],"predecessor-version":[{"id":1181,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1170\/revisions\/1181"}],"wp:attachment":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=1170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=1170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=1170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}