Friday 11 May 2012

Eclipsowe skróty klawiszowe, których wstyd nie znać

W necie jest sporo artykułów w stylu "top10 Eclipse scrouts", "Eclipse shortcuts that every1 should know" lub po prostu  "najbardziej przydatne skróty w Eclipsie". Przed chwilą skończyłem lekturę jednego z nich, który otworzył mi oczy na to jak wiele jeszcze nie umiem i jak koślawo może wyglądać moje pisanie kodu, dla kogoś kto stoi z boku. Oczywiście, znam sporo skrótów, które ułatwiają mi życie każdego dnia, ale mimo wszystko czułem, że czegoś mi brakuje, że pewnie niektóre rzeczy można wykonać sprawniej...

Najlepszą lampką ostrzegawczą jest to to ile razy musimy chwycić myszkę, aby coś zrobić. Pół biedy jeśli klikamy myszką, aby rozwinąć menu od refaktoringu, albo wstawiania kodu - prawdziwą tragedią jest to, gdy ktoś w ogóle nie wie, że takie wynalazki istnieją i większość rzeczy pisze totalnie z palca (a tak robią też i niektórzy "doświadczeni programiści"). Powtórzę jeszcze raz i mocniej - jeżeli musisz zdjąć dłoń z klawiatury i położyć ją na myszce, to pewnie robisz coś źle, pewnie da się szybciej. Pomyśl o tym, do jakich czynności wcześniej była Ci potrzebna myszka, może któraś z nich da się wykonać skrótami, które zaraz zaprezentuję.

By żyło się lepiej, wszystkim :)

Eclipse zawiera w sobie setki skrótów, ja skupię się na tych, które uważam za ważne, ale i tak będzie ich na tyle dużo, że warto je jakoś uporządkować.

Agenda:
  1. Skróty ułatwiające poruszanie się po edytorze.
  2. Skróty ułatwiające dłubanie w kodzie.

Skróty ułatwiające poruszanie się po edytorze:


Open Type (otworzenie typu - klasy lub interfejsu) - Ctrl + Shift + T. Nie trzeba szukać konkretnej klaski myszką, nie trzeba na chybił trafił zaglądać do kolejnego pakiety z nadzieją "o tu cię znajdę"... Tak jest o wiele szybciej.


Eclipse ma to do siebie, że w tym i w podobnych menu, umożliwiających wyszukanie czegoś, owe szukanie jest naprawdę przyjemne - wpisując wielkie litery występujące w nazwie, nie musimy się bawić w wyrażenia regularne (np. wyszukując NullPointerException nie musimy pisać N*P*E, wystarczy NPE :)) - wystarczy wpisać Wielkie Litery występujące w nazwie typu, dodatkowo wyniki można zawęzić podając kolejne fragmenty nazwy, tak jak na załączonym obrazku. Wyrażenia regularne jednak się przydają, bo aby znaleźć NullPointerException, samo Exception to za mało, ale *Exception już w zupełności wystarcza.





Oper Resource (otworzenie dowolnego pliku) - Ctrl + Shift + R. Znowu - znacznie szybsza metoda, niż szukanie czegoś w Project Excplorerze. Kolejną zaletą, widoczną poniżej, jest to, że domyślnie pokazywana jest lista plików, które wcześniej zostały otworzone tym sposobem. XMLe, pliki konfiguracyjne, JSPy, htmle, pierdy dupy żabki - ten skrót może otworzyć właśnie to, czyli wszystkie pliki znajdujące się w projekcie.
































Type Hierarchy (Klasy pochodne, rozszerzane, implementowane interfejsy, itp - pokazanie danego typu w hierarchii ) - F4



Kiedyś używałem tego skrótu dość intensywnie... ale ostatnio odkryłem coś jeszcze lepszego:

Czemu lepszego?
  • naciśnięcie F4 skutkuje tym, że mój must-have widok, czyli Project Explorer chwilowo jest przesłonięty owym Type Hierarchy (oczywiście można to zmienić i przenieść jedno z nich w inne miejsce, ale to jest akurat mniejszy problem), 
  • większą niedogodnością jest to, że aby przełączać się między sub-typami a super-typami trzeba się naklikać myszką...


Wygodniejszą metodą, na otwarcie analogicznego widoku hierarchii, jest użycie  
Ctrl + T



Ponowne naciśnięcie Ctrl + T powoduje szybkie przełączenie się między sub-typami a super-typami a nawigowanie strzałkami i pacnięcie Entera skutkuje otworzeniem danego typu.







Quick outline (podgląd pól i metod w klasie) - Ctrl + O. To samo co w widoku Outline widocznym po prawej stronie. Ale okienko od razu po otwarciu przejmuje focus i można po nim operować strzałkami, w celu przejścia do konkretnej metody (lub pola), bez dotykania myszki :). Szkoda tylko, że scroll na myszce działa dopiero gdy się klinie weń myszką, lub zacznie chodzić po tym okienku strzałkami.

























Ale najbardziej interesujący "ficzer" ukazuje się, gdy wciśniemy Ctrl + O po raz kolejny - rozwija się pełna lista pól i metod obiektu danej klasy, czyli także wszystkich odziedziczonych. Od razu widać też z której klasy co pochodzi.































Go to Line (przejście do linii nr X) - Ctrl + L. Bardzo przydatne, gdy ktoś obok krzyczy "Masz błąd w 3528 linii, napraw to natychmiast!!".



















Search (szukajka) - Ctrl + H


































inne:

Backward history (poprzednie edytowane miejsce) - Alt + Strzałka w lewo

Forward history (natępne edytowane miejsce) - Alt + Strzałka w prawo

Oba skróty są baaaaardzo przydatne, kiedy nie ma się w zwyczaju zamykać otwartych plików i szybko robi się ich kilkadziesiąt lub ponad setka.




Open Editor (lista plików otwartych do edycji) - Ctrl + E









CDN. / W następnym odcinku: Skróty ułatwiające dłubanie w kodzie.
Czyli pisanie, refactoring i naprawianie kodu.

Monday 7 May 2012

Notepad++ vs Eclipse

Niecały rok temu, podczas jednego z technicznych szkoleń, spotkałem pewnego Niemca, ponoć programistę, obecnie Project Managera. W szkoleniu uczestniczył tak jak wszyscy inni. Charakteryzowało go to, że jako jedyny olał uprzednio przygotowanego na VMie Eclipsa, który miał podlinkowane wszelkie potrzebne jary i skonfigurowane wtyczki (m.in. FileSync), które naprawdę były bardzo pomocne. Gość postanowił używać Vi, a klaski kompilować z konsoli, bawiąc się javac. Brawa dla niego, prawdziwy hardkorowiec, był tylko jeden problem... w tym jego wspaniałym Vi udało mu się zrobić mniej więcej nic. A wszyscy radzili, "użyj Eclipsa, to nie boli".

Faktycznie, nie boli, ale co sprawia, że siadając do Eclipsa (lub Netbeansa, czy innego intelija) jesteśmy bardziej produktywni od Niemca, który go po raz pierwszy widzi na oczy? Czemu nasz IDE to coś więcej niż Notepad++ z wbudowanym kompilatorem, który tu i tam potrafi pokolorować nam kod na żółto bądź na czerwono?

Dziwią mnie osoby, które przesiadają się z Eclipsa na Netbeansa, lub odwrotnie, machając przy tym ręką i mówiąc, że to bez znaczenia w czym będą pisać. To wskazuje na to, że nie korzystają z tego co ich środowisko ma im do zaoferowania, degradują IDE do roli notatnika. Faktem jest, że praca programisty to w 80% czytanie kodu (w tym oczywiście własnego - więc piszmy tak, aby się na jego późniejszy widok nie porzygać...) a tylko 20% to pisanie. W te 20% można pewnie jeszcze wliczyć myślenie, planowanie i inne czynności, które same w sobie nie przekładają się na klepanie w klawiaturę. Ale kiedy już siadamy do pisania, to na Boga, róbmy to możliwie najbardziej ergonomicznie, korzystajmy z tego, co ma nam do zaoferowania środowisko programistyczne!

Często w ogłoszeniach o pracę pojawia się wzmianka "znajomość: (...) Eclipse (/Netbeans)", co wcale nie znaczy, że wiemy, że istnieje. Nie znaczy to też, że umiemy tam stworzyć projekt "Hello World!", lub napisać projekt na uczelnie. Nie, nie, i jeszcze raz nie. To znaczy, że nasza praca pod Eclipsem będzie sprawna i efektywna, czyli w praktyce, że potrafimy zmusić Eclipsa, aby pisał za nas kod (i aby czynił to szybko:)). Dla przykładu prosty JavaBean:
package com.blogspot.pmjavnie;

public class Person {

    private String name;

    private String surname;

    private long personalId;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public long getPersonalId() {
        return personalId;
    }

    public void setPersonalId(long personalId) {
        this.personalId = personalId;
    }

}
Licząc tabulacje jako 4 spacje, powyższa klasa ma ~630 znaków. Napisanie jej zajęło mi mniej niż 30 sekund, a moje stukanie w klawiaturę to w większości albo ctrl i/lub spacja i/lub enter. Nie uwierzę, że jest na świecie taki mistrz pisania dziesięcioma palcami, który dokona tego szybciej, bez korzystania z żadnego z uroków IDE, nawet on:



Nie ważne co w życiu robisz i tak znajdzie się jakiś Chińczyk (może to Koreańczyk?), który jest w tym lepszy... daj mu jeszcze Razer BlackWidow Ultimate keyboard i już w ogóle pozamiata... heh, ale nie tym razem :)


Każde IDE ma swój urok i nieważne którego używasz, musisz czuć się w nim jak ryba w wodzie. Ja oczywiście skupię się na tym, którego sam używam, Eclipsie.


Jeżeli w Twoim zespole używa się różnych IDE, a Ty jesteś jego liderem, koniecznie naucz się korzystać z każdego z nich, chociaż w takim stopniu, aby znać podstawę obsługi - niejednoktronie szybciej jest podjeść i napisać komuś kawałek kodu, niż tłumaczyć to mażąc po tablicy, lub dyktując komuś co ma pisać. Jeśli nie jesteś liderem, też spróbuj, wbrew pozorom jest to praktyczna wiedza, która szybko nie uleci.



Do rzeczy... Co odróżnia Eclipsa od notatniczka?
  1. skróty klawiszowe
  2. szablony (Templates) kodu 
  3. odrobina magii, która czyni życie jeszcze (znacznie!) piękniejszym.

 CDN. - warto chociaż parę słów napisać o wyższej wyliczance. Pierwsze dwa punkty mówią same za siebie, ostatni to lombok - genialna rzecz! :)