{"id":2065,"date":"2019-08-16T12:34:24","date_gmt":"2019-08-16T10:34:24","guid":{"rendered":"https:\/\/www.kompikownia.pl\/?p=2065"},"modified":"2019-08-16T12:34:26","modified_gmt":"2019-08-16T10:34:26","slug":"umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-ii-intellij-idea","status":"publish","type":"post","link":"https:\/\/www.kompikownia.pl\/index.php\/2019\/08\/16\/umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-ii-intellij-idea\/","title":{"rendered":"Umiej\u0119tno\u015b\u0107 obs\u0142ugi IDE &#8211; uczy\u0144 programowanie wydajniejszym &#8211; cz II &#8211; IntelliJ IDEA"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">4<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span>\n<p>Czytaj\u0105c <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2019\/08\/03\/umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-i\/\">poprzedni artyku\u0142 <\/a>dowiedzia\u0142e\u015b si\u0119, dlaczego umiej\u0119tno\u015b\u0107&nbsp;obs\u0142ugi IDE jest bardzo cenna. Nie poznali\u015bmy natomiast \u017cadnych konkret\u00f3w! A te s\u0105 przecie\u017c najwa\u017cniejsze. Dzisiaj naprawd\u0119&nbsp;nauczymy si\u0119 pos\u0142ugiwa\u0107 \u015brodowiskiem programistycznym, na przyk\u0142adzie programu IntelliJ IDEA. Poznasz najwa\u017cniejsze skr\u00f3ty klawiszowe. No to do dzie\u0142a!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">IntelliJ IDEA &#8211; dlaczego akurat te IDE?<\/h2>\n\n\n\n<p>Mia\u0142em kr\u00f3tsze lub d\u0142u\u017csze przygody z wieloma j\u0119zykami programowania i z wieloma \u015brodowiskami programistycznymi &#8211; lepszymi lub gorszymi. W \u015bwiecie Javy od d\u0142ugiego czasu toczy si\u0119 walka pomi\u0119dzy dwoma \u015brodowiskami programistycznymi &#8211; IntelliJ IDEA i Eclipse. U\u017cywa\u0142em obydwu, z tym\u017ce wcze\u015bniej poznanym \u015brodowiskiem by\u0142o Eclipse. IntelliJ IDEA by\u0142o jednym z IDE, z kt\u00f3rymi zapozna\u0142em si\u0119&nbsp;najp\u00f3\u017aniej. Lecz najszybciej si\u0119 do niego&nbsp;przekona\u0142em \ud83d\ude42 <\/p>\n\n\n\n<p>Obydwa IDE s\u0105 ogromnymi kombajnami, z wieloma skr\u00f3tami klawiszowymi u\u0142atwiaj\u0105cymi i przyspieszaj\u0105cymi prac\u0119. Zar\u00f3wno IntelliJ IDEA jak i Eclipse pozwalaj\u0105 na instalacj\u0119 r\u00f3\u017cnych plugin\u00f3w, kt\u00f3re rozszerzaj\u0105 ich mo\u017cliwo\u015bci. Dlaczego wi\u0119c uwa\u017cam IntelliJ IDEA za lepsze?<\/p>\n\n\n\n<p>Po pierwsze, jest du\u017co szybsze. Posiadam ma\u0142y, samodzielnie rozwijany projekt (napisz\u0119 o nim kiedy\u015b wpis na \u0142amach tego bloga), oparty o Eclipse  napisany w C++.  W chwili obecnej liczy oko\u0142o 70 plik\u00f3w *.cpp i *.h. Liczba ta nie jest jaka\u015b ogromna, a mimo wszystko Eclipse potrafi na moim dosy\u0107 mocnym komputerze si\u0119 &#8222;zamy\u015bli\u0107&#8221; na dosy\u0107 d\u0142ug\u0105 chwil\u0119. IntelliJ IDEA, po otworzeniu projektu napisanego w Javie zawieraj\u0105cego por\u00f3wnywaln\u0105&nbsp;ilo\u015b\u0107&nbsp;plik\u00f3w jest znacznie bardziej responsywne.<\/p>\n\n\n\n<p>Innym powodem jest znacznie wi\u0119ksza obecnie popularno\u015b\u0107 IntelliJ IDEA nad Eclipse, przynajmniej je\u015bli chodzi o \u015brodowisko Javy. Koronnym przyk\u0142adem jest tutaj Android Studio, kt\u00f3re jest oparte w\u0142a\u015bnie na IntelliJ IDEA i sta\u0142o si\u0119 oficjalnie zalecanym przez Google \u015brodowiskiem do tworzenia aplikacji na Androida. Wi\u0119ksza popularno\u015b\u0107&nbsp;sprawia, \u017ce mo\u017cna \u0142atwiej uzyska\u0107 pomoc w rozwi\u0105zaniu ewentualnych problem\u00f3w. <\/p>\n\n\n\n<p>Koronnym argumentem natomiast zostanie stabilno\u015b\u0107. Moje do\u015bwiadczenia wzgl\u0119dem stabilno\u015bci Eclipse s\u0105 dosy\u0107 negatywne. Kilka razy zdarzy\u0142o mi si\u0119, \u017ce IDE zamkn\u0119\u0142o si\u0119\u00a0samo (zar\u00f3wno na Linuxie, jak i na Windowsie). Regu\u0142\u0105 jest natomiast wywalanie r\u00f3\u017cnych b\u0142\u0119d\u00f3w zwi\u0105zanych z Jav\u0105, na kt\u00f3r\u0105 jest oparty (np.: <em>stack overflow error<\/em>, czy po prostu, <em>An error had occured<\/em>) po kilkugodzinnej pracy. IntelliJ IDEA buguje si\u0119 zauwa\u017calnie rzadziej. Oczywi\u015bcie, wymaga czasami restartu (np.: ze wzgl\u0119du na jaki\u015b bug w interfejsie), ale jest to mniej uci\u0105\u017cliwe. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">IntelliJ IDEA &#8211; przydatne skr\u00f3ty klawiszowe<\/h2>\n\n\n\n<p>Przejd\u017amy do sedna sprawy. Poznajmy kilka najcz\u0119\u015bciej u\u017cywanych skr\u00f3t\u00f3w klawiszowych, kt\u00f3re zauwa\u017calnie przyspiesz\u0105 twoj\u0105 prac\u0119. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utworzenie metody prywatnej z zaznaczonego kodu (CTRL+ALT+M)<\/h3>\n\n\n\n<p>Metody publiczne nie powinny by\u0107 zbyt d\u0142ugie. Zaawansowane obliczenia, czy skomplikowane warunki powinni\u015bmy wydziela\u0107 do metod prywatnych. IntelliJ IDEA pozwala \u0142atwo wydzieli\u0107&nbsp;zaznaczony kod do oddzielnej metody prywatnej za pomoc\u0105 skr\u00f3tu klawiszowego <strong>CTRL+ALT+<\/strong>M. <\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00021.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Wydzielenie zaznaczonego ci\u0105gu znak\u00f3w\/liczby do sta\u0142ej (CTRL+ALT+C)<\/h3>\n\n\n\n<p>Wewn\u0105trz kodu nie powinni\u015bmy zaszywa\u0107 wpisanych na sztywno liczb czy ci\u0105g\u00f3w znak\u00f3w. Je\u015bli w kilku miejscach u\u017cywamy jednego i tego samego ci\u0105gu znak\u00f3w, a w przysz\u0142o\u015bci zapragniemy go zmieni\u0107, b\u0119dziemy musieli to zrobi\u0107\u00a0w kilku miejscach na raz. Dlatego powinni\u015bmy wydziela\u0107 takie rzeczy do sta\u0142ych.  <\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00001.webm\">\n<\/video>\n\n\n\n<p>Po naci\u015bni\u0119ciu skr\u00f3tu klawiszowego mo\u017cemy wprowadzi\u0107&nbsp;nazw\u0119 zmiennej. Je\u015bli wci\u015bniemy go drugi raz, pojawi si\u0119 okienko dialogowe z mo\u017cliwo\u015bci\u0105 wyboru szczeg\u00f3\u0142\u00f3w &#8222;wyodr\u0119bnienia&#8221;. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"341\" height=\"380\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Screenshot_20190810_120142.png\" alt=\"\" class=\"wp-image-2081\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Szybka refaktoryzacja (Shift+F6)<\/h3>\n\n\n\n<p>Zdarza si\u0119, \u017ce musimy zmieni\u0107 nazw\u0119 jakiej\u015b zmiennej czy metody (np.: ze wzgl\u0119du na to, \u017ce jej mechanizm si\u0119 zmieni\u0142 i nazwa nie oddaje aktualnego mechanizmu dzia\u0142ania. IntelliJ IDEA pozwala bardzo \u0142atwo zmieni\u0107 nazw\u0119 i jednocze\u015bnie zaktualizowa\u0107 wszystkie miejsca, w kt\u00f3rych ta nazwa by\u0142a wykorzystywana. <\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00002.webm\">\n<\/video>\n\n\n\n<p>Podobnie jak poprzednio, powt\u00f3rne wci\u015bni\u0119cie tej kombinacji wy\u015bwietli okno dialogowe pozwalaj\u0105ce ustawi\u0107 wi\u0119cej szczeg\u00f3\u0142\u00f3w zmiany. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"172\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/image.png\" alt=\"\" class=\"wp-image-2092\"\/><\/figure><\/div>\n\n\n\n<p>Refaktoryzacji mo\u017cna u\u017cywa\u0107 tak\u017ce na nazwach plik\u00f3w.<\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00007.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Przej\u015bcie do definicji\/deklaracji metody\/klasy (CTRL+klikni\u0119cie na metod\u0119\/klas\u0119)<\/h3>\n\n\n\n<p>Czasami istnieje potrzeba zajrzenia, jak wygl\u0105da &#8222;wn\u0119trze&#8221; metody czy klasy, kt\u00f3rej u\u017cywamy. Mo\u017cemy oczywi\u015bcie znale\u017a\u0107 to, czego szukamy przez przegl\u0105danie drzewa katalog\u00f3w, ale istnieje szybszy spos\u00f3b w postaci skr\u00f3tu klawiszowego:<strong> CTRL+klikni\u0119cie myszk\u0105 na metod\u0119\/klas\u0119<\/strong>.<\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00003.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Przej\u015bcie do implementacji danej funkcji (CTRL+ALT+B)<\/h3>\n\n\n\n<p>R\u00f3wnie wa\u017cne, jak znalezienie definicji\/deklaracji metody jest czasami znalezienie jej implementacji. S\u0142u\u017cy do tego skr\u00f3t klawiszowy <strong>CTRL+Alt+B<\/strong>.<\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00005.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Dodawanie komentarzy jednoliniowych (CTRL+\/) i blokowych (CTRL+Shift+\/)<\/h3>\n\n\n\n<p>Co robisz, je\u015bli tymczasowo chcesz wy\u0142\u0105czy\u0107 z dzia\u0142ania du\u017cy blok kodu? Oczywi\u015bcie, komentujesz \ud83d\ude42 Ale r\u0119czne wpisywanie znaczk\u00f3w komentarzy mo\u017ce by\u0107 bardzo m\u0119cz\u0105ce. Dlatego zosta\u0142y stworzone odpowiednie skr\u00f3ty klawiszowe: <strong>CTRL+\/<\/strong> oraz <strong>CTRL+Shift+\/<\/strong>. U\u017cycie skr\u00f3tu klawiszowego generuje komentarz okre\u015blonego typu. Natomiast ponowne u\u017cycie usuwa komentarz.<\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00008.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Optymalizacja import\u00f3w (CTRL+ALT+O)<\/h3>\n\n\n\n<p>Optymalizacja import\u00f3w ma znaczenie g\u0142\u00f3wnie estetyczne. Nieu\u017cywane klauzule import potrafi\u0105 nieraz skutecznie zaciemni\u0107 obraz klasy. Na szcz\u0119\u015bcie, \u0142atwo rozwi\u0105za\u0107 ten problem za pomoc\u0105 skr\u00f3tu klawiszowego <strong>CTRL+ALT+O.<\/strong><\/p>\n\n\n\n<p>U\u017cycie skr\u00f3tu na pojedynczym pliku zoptymalizuje importy tylko w tym pliku.<\/p>\n\n\n\n<p>U\u017cycie skr\u00f3tu na &#8222;korzeniu&#8221; drzewa katalog\u00f3w (tak jak na filmie poni\u017cej) spowoduje zoptymalizowanie import\u00f3w we wszystkich plikach znajduj\u0105cych si\u0119 w hierarchii poni\u017cej. <\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00009.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Szybkie tworzenie funkcji main\/system.out.println<\/h3>\n\n\n\n<p>Ten skr\u00f3t jest bardzo rzadko wykorzystywany, ale warto go zna\u0107. Aby utworzy\u0107 funkcj\u0119 main, wpisujemy <strong>psvm<\/strong> i naciskamy <strong>Enter<\/strong>. Aby utworzy\u0107 wywo\u0142anie metody System.out.println wpisujemy <strong>sout<\/strong> i wciskamy <strong>Enter<\/strong>.<\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00011.webm\">\n<\/video>\n\n\n\n<p>Istniej\u0105&nbsp;tak\u017ce inne kombinacje zwi\u0105zane z System.out.println, kt\u00f3re s\u0105 pokazane na filmiku wy\u017cej. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Szybkie tworzenie sta\u0142ych<\/h3>\n\n\n\n<p>IntelliJ IDEA pozwala na szybkie tworzenie sta\u0142ych. Wystarczy wprowadzi\u0107 skr\u00f3t <strong>psf<\/strong>, co IntelliJ uzupe\u0142ni do <strong>public static final. <\/strong>IntelliJ IDEA posiada tak\u017ce skr\u00f3ty do utworzenia sta\u0142ej typu int (<strong>psfi) <\/strong>oraz typu String <strong>(psfs)<\/strong><\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00012.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Generowanie boilerplate&#8217;u (gettery, settery itp) (ALT+INSERT)<\/h3>\n\n\n\n<p>Dost\u0119p do prywatnych atrybut\u00f3w klasy powinien odbywa\u0107 si\u0119 za pomoc\u0105&nbsp;specjalnych metod zwanych getterami i setterami. Ich r\u0119czne pisanie poch\u0142ania mas\u0119 czasu. IntelliJ IDEA na szcz\u0119\u015bcie potrafi wygenerowa\u0107&nbsp;tego typu metody automatycznie. <\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00017.webm\">\n<\/video>\n\n\n\n<h3 class=\"wp-block-heading\">Menu akcji(ALT+ENTER)<\/h3>\n\n\n\n<p>Inicjacja zmiennej jest jedn\u0105 z podstawowych i najcz\u0119\u015bciej wykonywanych czynno\u015bci. Robot\u0119 t\u0119 mo\u017ce jeszcze bardziej upro\u015bci\u0107 skr\u00f3t <strong>ALT+ENTER<\/strong>, kt\u00f3ry udost\u0119pnia menu kontekstowe pozwalaj\u0105ce wybra\u0107 m.in. jeden z kilku sposob\u00f3w inicjacji zmiennej. <\/p>\n\n\n\n<p>Skr\u00f3t <strong>ALT+ENTER<\/strong> i menu kontekstowe wywo\u0142ywane za jego pomoc\u0105 zawieraj\u0105\u00a0wiele innych u\u017cytecznych funkcji, kt\u00f3rych czasami musimy u\u017cy\u0107. <\/p>\n\n\n\n<video controls=\"\">\n<source src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/08\/Kazam_screencast_00018.webm\">\n<\/video>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowuj\u0105c<\/h2>\n\n\n\n<p>Przysw\u00f3j sobie powy\u017csze skr\u00f3ty klawiszowe. S\u0105 to jedne z najcz\u0119\u015bciej wykorzystywanych kombinacji, kt\u00f3re naprawd\u0119 przyspieszaj\u0105 prac\u0119. W kolejnej cz\u0119\u015bci tej serii zajmiemy si\u0119 dwoma pluginami, kt\u00f3re jeszcze bardziej przyspiesz\u0105 twoj\u0105 prac\u0119 oraz sprawi\u0105, \u017ce b\u0119dziesz pope\u0142nia\u0142 znacznie mniej b\u0142\u0119d\u00f3w dzi\u0119ki &#8222;automatycznemu code-review&#8221;. <\/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\">4<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span> Czytaj\u0105c poprzedni artyku\u0142 dowiedzia\u0142e\u015b si\u0119, dlaczego umiej\u0119tno\u015b\u0107&nbsp;obs\u0142ugi IDE jest bardzo cenna. Nie poznali\u015bmy natomiast \u017cadnych konkret\u00f3w! A te s\u0105 przecie\u017c najwa\u017cniejsze. Dzisiaj naprawd\u0119&nbsp;nauczymy si\u0119 pos\u0142ugiwa\u0107 \u015brodowiskiem programistycznym, na przyk\u0142adzie programu &#8230;<\/p>\n","protected":false},"author":1,"featured_media":466,"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":[77,72],"tags":[76,74,73,75],"_links":{"self":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2065"}],"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=2065"}],"version-history":[{"count":42,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2065\/revisions"}],"predecessor-version":[{"id":2133,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2065\/revisions\/2133"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media\/466"}],"wp:attachment":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media?parent=2065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/categories?post=2065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/tags?post=2065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}