{"id":2023,"date":"2019-08-03T11:07:50","date_gmt":"2019-08-03T09:07:50","guid":{"rendered":"https:\/\/www.kompikownia.pl\/?p=2023"},"modified":"2019-08-17T09:07:03","modified_gmt":"2019-08-17T07:07:03","slug":"umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-i","status":"publish","type":"post","link":"https:\/\/www.kompikownia.pl\/index.php\/2019\/08\/03\/umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-i\/","title":{"rendered":"Umiej\u0119tno\u015b\u0107\u00a0obs\u0142ugi IDE &#8211; uczy\u0144 programowanie wydajniejszym cz. I"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">5<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span>\n<p>Czy zastanawia\u0142e\u015b si\u0119 kiedy\u015b nad mo\u017cliwo\u015bciami swojego IDE? Jaki jest tw\u00f3j styl pracy ze \u015brodowiskiem programowania? U\u017cywasz go bardziej jako notatnik, czy korzystasz z wbudowanych skr\u00f3t\u00f3w klawiszowych czy innych zaawansowanych funkcji? Dowiedz si\u0119&nbsp;wi\u0119cej o tym, \u017ce umiej\u0119tno\u015b\u0107 programowania to tak\u017ce umiej\u0119tno\u015b\u0107&nbsp;obs\u0142ugi narz\u0119dzi z tym zwi\u0105zanych. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dlaczego chc\u0119 si\u0119 podzieli\u0107 moimi spostrze\u017ceniami?<\/h2>\n\n\n\n<p>Pewnie wiele razy mog\u0142e\u015b przeczyta\u0107 na tym blogu, \u017ce programowaniem interesuj\u0119 si\u0119 ju\u017c od podstaw\u00f3wki. Od tego wa\u017cnego dla mnie momentu min\u0119\u0142o ju\u017c co najmniej kilkana\u015bcie lat Ale dopiero teraz, na praktykach, dowiedzia\u0142em si\u0119 jaka moc drzemie we wsp\u00f3\u0142czesnych \u015brodowiskach programistycznych. U\u015bwiadomi\u0142em sobie, \u017ce wykorzystywa\u0142em jedynie bardzo niewielk\u0105 cz\u0119\u015b\u0107 dostarczanych mo\u017cliwo\u015bci. Marnowa\u0142em czas na r\u0119czne wykonywanie czynno\u015bci, kt\u00f3re program m\u00f3g\u0142 zrobi\u0107 za mnie. Traci\u0142em cenne chwile \u017cycia na przekopywanie si\u0119 przez dziesi\u0105tki menu i okienek konfiguracyjnych, kiedy wystarczy\u0142o u\u017cycie prostego skr\u00f3tu klawiszowego. <\/p>\n\n\n\n<p>Wi\u0119kszo\u015b\u0107 pocz\u0105tkuj\u0105cych programist\u00f3w nie zna tajnik\u00f3w \u015brodowisk programistycznych, kt\u00f3rych u\u017cywaj\u0105, gdy\u017c nikt nie u\u015bwiadomi\u0142 ich \u017ce jest to bardzo wa\u017cne. <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2019\/06\/30\/jak-nauczyc-sie-programowania-w-2019-r\/\">W jednym z poprzednich artyku\u0142\u00f3w pisa\u0142em, \u017ce j\u0119zyk programowania jest narz\u0119dziem.<\/a> Teraz mog\u0119 uaktualni\u0107 swoj\u0105 opini\u0119 i napisa\u0107, \u017ce te narz\u0119dzie jest cz\u0119\u015bci\u0105 wi\u0119kszej r\u00f3wnie skomplikowanej maszynerii, kt\u00f3rej triki i tajniki r\u00f3wnie\u017c warto pozna\u0107 w mo\u017cliwie jak najwi\u0119kszym stopniu. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Czym jest \u015brodowisko programistyczne (IDE)?<\/h2>\n\n\n\n<p>Czym w\u0142a\u015bciwie jest \u015brodowisko programistyczne? Niby proste pytanie, powiesz. \u015arodowisko programistyczne s\u0142u\u017cy do tego, aby u\u0142atwi\u0107 programi\u015bcie prac\u0119. Dzi\u0119ki temu mo\u017cesz po\u015bwi\u0119ca\u0107 wi\u0119cej czasu na w\u0142a\u015bciwe rozwi\u0105zywanie problemu, a mniej czasu na bezproduktywn\u0105 zabaw\u0119. IDE pomaga ci w szybkim nawigowaniu po kodzie projektu, nad kt\u00f3rym pracujesz. \u015arodowisko programistyczne wyr\u0119cza ci\u0119 w ko\u0144cu w obs\u0142udze dodatkowych narz\u0119dzi, kt\u00f3re s\u0105 niezb\u0119dne do uruchomienia programu napisanego w danym j\u0119zyku programowania. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jaki by\u0142by \u015bwiat gdyby nie te kombajny?<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"853\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/nuclear-2136244_1280.jpg\" alt=\"\" class=\"wp-image-2054\"\/><figcaption>Obraz <a href=\"https:\/\/pixabay.com\/pl\/users\/AlexAntropov86-2691829\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2136244\"> Alexander Antropov<\/a> z <a href=\"https:\/\/pixabay.com\/pl\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=2136244\"> Pixabay<\/a><\/figcaption><\/figure>\n\n\n\n<p>Wyobra\u017a sobie, \u017ce rzucasz sobie wyzwanie.  Polega ono na programowaniu u\u017cywaj\u0105c jedynie windowsowego notatnika i konsoli cmd systemu Windows. Brzmi jak prawdziwa tragedia, prawda? Ju\u017c pewnie cierpnie ci sk\u00f3ra, m\u00f3j drogi czytelniku, na my\u015bl o pracy w tak wy\u015bmienicie wygodnym \u015brodowisku?<\/p>\n\n\n\n<p>No c\u00f3\u017c. Zacznijmy t\u0119 prac\u0119. Uruchamiasz notepad. Zaczynasz pisa\u0107 kod. Pojawiaj\u0105 si\u0119 pierwsze dolegliwo\u015bci odstawienne, wynikaj\u0105ce z nag\u0142ego porzucenia prawdziwego IDE :). Zaczynasz widzie\u0107 \u015bwiat w spos\u00f3b czarno bia\u0142y, niczym daltonista. Pi\u0119kny, kolorowy, pogrubiony w wielu miejscach ze wzgl\u0119du na s\u0142owa kluczowe kod zamienia si\u0119 w jednokolorow\u0105 mieszanin\u0119 r\u00f3\u017cnych liter i cyfr. <\/p>\n\n\n\n<p>Pod wp\u0142ywem ogromnego b\u00f3lu istnienia zaczynaj\u0105 powstawa\u0107 kolejne linijki kodu. Pojedyncze funkcje zaczynaj\u0105 nabiera\u0107 jakiego\u015b okre\u015blonego kszta\u0142tu. W ko\u0144cu nadchodzi pora. Cz\u0119\u015b\u0107 kodu musi wyemigrowa\u0107 do innych plik\u00f3w. <\/p>\n\n\n\n<p>Pojawia si\u0119 kolejny problem. Dziesi\u0105tki otwartych okienek notepada zaczynaj\u0105 miesza\u0107 si\u0119 w g\u0142owie. Kombinacja ALT+TAB pr\u00f3buje niejako zast\u0105pi\u0107 braki, aczkolwiek marnym skutkiem. <\/p>\n\n\n\n<p>W ko\u0144cu nadchodzi pora na pr\u00f3b\u0119 uruchomienia programu, kt\u00f3ry powsta\u0142 z potu i \u0142ez. Ale zaraz zaraz. Jeszcze trzeba go skompilowa\u0107. Okno Bielutkie, posmagane w niekt\u00f3rych miejscach czarnymi pl\u0105\u015bami zast\u0119puje jednolicie czarne okienko cmd. Klawiatura pali si\u0119 od d\u0142ugich linii komend kompilatora wpisywanych z pr\u0119dko\u015bci\u0105 \u015bwiat\u0142a. <\/p>\n\n\n\n<p>Kompilacja nigdy nie udaje si\u0119 za pierwszym razem. Najpierw trzeba w\u0142a\u015bciwie wprowadzi\u0107 polecenie, aby potem naprawi\u0107 kilkana\u015bcie drobnych liter\u00f3wek. Pojawia si\u0119 kolejny symptom odstawienny IDE &#8211; niezwykle ci\u0119\u017ckie wyszukiwanie b\u0142\u0119d\u00f3w. Nie pomaga tak\u017ce brak auto-uzupe\u0142niania polece\u0144.<\/p>\n\n\n\n<p>Kompilator wyrzuci\u0142 nam mas\u0119 b\u0142\u0119d\u00f3w i ostrze\u017ce\u0144. \u0141askawie poinformowa\u0142 nas co prawda o linijce, w kt\u00f3rej wyst\u0105pi\u0142&nbsp;problem. Jednak\u017ce powstaje problem liczenia tych linii w momencie, kiedy pliki maj\u0105 ich ju\u017c po kilkaset. Notepad nie obs\u0142uguje numerowania linijek co sprawia, \u017ce prac\u0119 t\u0119 musisz wykona\u0107 samodzielnie. Oczy zaczynaj\u0105 pali\u0107 ze zm\u0119czenia wynikaj\u0105cego we wpatrywanie si\u0119 w zlewaj\u0105ce si\u0119 linijki kodu. <\/p>\n\n\n\n<p>Nie dajesz rady. Wyzwanie nie zosta\u0142o pokonane. Ty natomiast ju\u017c wiesz, ile pozornie bardzo prostych problem\u00f3w IDE rozwi\u0105zuje out of the box. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"854\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/binary-1327493_1280.jpg\" alt=\"\" class=\"wp-image-2053\"\/><figcaption>Obraz <a href=\"https:\/\/pixabay.com\/pl\/users\/geralt-9301\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1327493\"> Gerd Altmann<\/a> z <a href=\"https:\/\/pixabay.com\/pl\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1327493\"> Pixabay<\/a><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Co tracisz, nie umiej\u0105c obs\u0142ugiwa\u0107 IDE?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Czas po\u015bwi\u0119cony na boilerplate-code<\/h3>\n\n\n\n<p>Du\u017ca cz\u0119\u015b\u0107 tworzonych program\u00f3w to tzw. <strong>boilerplate code<\/strong>. Co mam na my\u015bli? Linijki kodu, kt\u00f3re w\u0142a\u015bciwie si\u0119 nie zmieniaj\u0105 i wyst\u0119puj\u0105 w takiej lub innej formie w ka\u017cdym projekcie. Standardowym przyk\u0142adem s\u0105 <strong>gettery i settery w Javie. <\/strong>S\u0105 one praktycznie zawsze takie same. Przy klasie zawieraj\u0105cej du\u017co atrybut\u00f3w r\u0119czne napisanie kilkudziesi\u0119ciu linijek kodu mo\u017ce zabra\u0107 kilkadziesi\u0105t minut czasu i by\u0107 naprawd\u0119 monotonne. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0141atwo\u015b\u0107 refactoringu<\/h3>\n\n\n\n<p>Wyobra\u017a sobie, \u017ce piszesz du\u017cy program. Po kilku dniach pracy zauwa\u017casz, \u017ce w wielu miejscach powtarza si\u0119 jedna i ta sama warto\u015b\u0107, kt\u00f3ra jest wpisana na sztywno w kod programu. Czy nie bardziej eleganckie by\u0142oby wydzielenie takiej warto\u015bci do oddzielnej zmiennej\/sta\u0142ej? Oczywi\u015bcie, \u017ce tak! Ale co si\u0119 z tym wi\u0105\u017ce? Konieczno\u015b\u0107 utworzenia nowej zmiennej i tym samym zast\u0105pienia <strong>wszystkich warto\u015bci wpisanych na sztywno w kod t\u0105 zmienn\u0105. <\/strong>Przy ma\u0142ym projekcie by\u0107 mo\u017ce nie zajmie to zbyt du\u017co czasu. Ale co je\u015bli takich miejsc jest kilkaset a program podzielony jest na kilkadziesi\u0105t plik\u00f3w? Wtedy taki problem to co najmniej kilka godzin wyj\u0119tych z \u017cyciorysu. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sp\u00f3jno\u015b\u0107 formatowania i czytelno\u015b\u0107 kodu<\/h3>\n\n\n\n<p>Czytelno\u015b\u0107 kodu jest naprawd\u0119 bardzo wa\u017cna. Szczeg\u00f3lnie wtedy, je\u015bli kto\u015b b\u0119dzie w przysz\u0142o\u015bci na nim pracowa\u0142. Niezwykle istotna jest tak\u017ce sp\u00f3jno\u015b\u0107 stylu. To, czy stawiamy klamr\u0119 otwieraj\u0105c\u0105 w tej samej linijce w kt\u00f3rej ko\u0144czy si\u0119 deklaracja metody czy dopiero w nast\u0119pnej mo\u017ce nie ma wp\u0142ywu na dzia\u0142anie programu, ale ma wielki wp\u0142yw na czytelno\u015b\u0107. Teraz wyobra\u017a sobie, \u017ce przygotowujesz si\u0119 do analizy kodu \u017ar\u00f3d\u0142owego programu kt\u00f3ry ma kilkadziesi\u0105t plik\u00f3w. Co zrobisz w sytuacji, gdy w ka\u017cdym z nich stosowana jest inna konwencja? Albo dostaniesz oczopl\u0105su, albo b\u0119dziesz, \u0142agodnie m\u00f3wi\u0105c, zdenerwowany ci\u0105g\u0142ym przestawianiem m\u00f3zgu na czytanie inaczej sformatowanego tekstu. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Git i konflikty<\/h3>\n\n\n\n<p>Kto pracowa\u0142 z gitem, ten wie jak mocno wyprowadzaj\u0105 z r\u00f3wnowagi konflikty. Konflikty wyst\u0119puj\u0105 najcz\u0119\u015bciej wtedy, gdy razem ze swoim wsp\u00f3\u0142pracownikiem nieopatrznie zmodyfikujemy ten sam plik w tym samym miejscu. Git niestety nie jest jeszcze na tyle inteligentny aby domy\u015bli\u0142 si\u0119, kt\u00f3ra wersja pliku ma by\u0107 t\u0105 ostateczn\u0105. Moja czy mojego wsp\u00f3\u0142pracownika? A mo\u017ce obydwie maj\u0105 w sobie ziarno prawdy?<\/p>\n\n\n\n<p>Git oznacza miejsca, w kt\u00f3rych wyst\u0105pi\u0142&nbsp;konflikt specjalnymi znacznikami. Proces r\u0119cznego usuwania konflikt\u00f3w polega na zrobieniu porz\u0105dku w plikach, w kt\u00f3rych wyst\u0105pi\u0142 konflikt. <\/p>\n\n\n\n<p>Podczas projekt\u00f3w, kt\u00f3re robili\u015bmy na studiach rozwi\u0105zywanie konflikt\u00f3w by\u0142o najcz\u0119\u015bciej wykonywane r\u0119cznie. Przez analiz\u0119 pliku, wywalenie gitowych znacznik\u00f3w i samodzielne z\u0142\u0105czenie obydwu plik\u00f3w. Zajmowa\u0142o to czasami naprawd\u0119 du\u017co czasu. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Analiza kodu<\/h3>\n\n\n\n<p>Prawid\u0142owe dzia\u0142anie napisanego przez nas programu jest z pewno\u015bci\u0105 kwintesencj\u0105 pracy. Mo\u017ce si\u0119 jednak okaza\u0107, \u017ce program wywala si\u0119 przez jaki\u015b g\u0142upi b\u0142\u0105d, kt\u00f3ry pope\u0142nili\u015bmy niechc\u0105cych, a kt\u00f3rego za \u017cadne skarby \u015bwiata nie mo\u017cemy znale\u017a\u0107. Istnieje tak\u017ce inny rodzaj k\u0142opot\u00f3w, kt\u00f3ry mo\u017ce nie powoduje crashu aplikacji, ale stwarza np.: potencjalne luki bezpiecze\u0144stwa. Tych b\u0142\u0119d\u00f3w mo\u017cemy nie zauwa\u017cy\u0107. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Konkluduj\u0105c powy\u017csze rozwa\u017cania<\/h3>\n\n\n\n<p>Wszystkie powy\u017csze problemy w du\u017cej mierze rozwi\u0105zuje odpowiednio skonfigurowane i wyposa\u017cone w ro\u017cne pluginy IDE. Oszcz\u0119dza nam to naprawd\u0119 mas\u0119 czasu, kt\u00f3ry mo\u017cemy wykorzysta\u0107 w bardziej po\u017cyteczny spos\u00f3b. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co dalej? <\/h2>\n\n\n\n<p>Narobi\u0142em ci czytelniku smaczku, a w sumie nie poda\u0142em rozwi\u0105zania. No c\u00f3\u017c, powiemy o tym w nast\u0119pnym artykule. <\/p>\n\n\n\n<p>Nast\u0119pne artyku\u0142y b\u0119d\u0105 po\u015bwi\u0119cone \u015brodowisku programistycznemu IntellJ IDEA. <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2019\/08\/16\/umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-ii-intellij-idea\/\">Z pierwszej cz\u0119\u015bci dowiesz si\u0119 co nieco o skr\u00f3tach klawiszowych, kt\u00f3re warto zna\u0107.<\/a> Dowiesz si\u0119, jakie pluginy warto zainstalowa\u0107, a tak\u017ce jak optymalnie korzysta\u0107 z IDE programuj\u0105c w j\u0119zyku Java. <\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">5<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span> Czy zastanawia\u0142e\u015b si\u0119 kiedy\u015b nad mo\u017cliwo\u015bciami swojego IDE? Jaki jest tw\u00f3j styl pracy ze \u015brodowiskiem programowania? U\u017cywasz go bardziej jako notatnik, czy korzystasz z wbudowanych skr\u00f3t\u00f3w klawiszowych czy innych zaawansowanych &#8230;<\/p>\n","protected":false},"author":1,"featured_media":2053,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[72],"tags":[76,74,73,75],"_links":{"self":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2023"}],"collection":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/comments?post=2023"}],"version-history":[{"count":25,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2023\/revisions"}],"predecessor-version":[{"id":2134,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2023\/revisions\/2134"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media\/2053"}],"wp:attachment":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media?parent=2023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/categories?post=2023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/tags?post=2023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}