Własne szablony kodu w Eclipse

Eclipse oferuje cały arsenał różnych narzędzi ułatwiających na codzień pisanie aplikacji. Chyba najmniej lubianą przez programistów czynnością jest pisanie w wielu miejscach tego samego kodu. W tym króciutkim artykule pokażę jak można sobie to zadanie ułatwić wykorzystując szablony kodu.

Problem

Wyobraźmy sobie sytuację (niezbyt wyszukaną zresztą, ale dobrą do celów edukacyjnych), w której każdy nasz obiekt musi posiadać własną implementację metod equals(), hashCode() oraz toString(). Załóżmy też, że dla każdego obiektu wyglądać będą one podobnie i wykorzystywać będą narzędzia z pakietu Commons Lang. Nasze metody mogą więc wyglądać tak:

public String toString() {
	return ReflectionToStringBuilder.toString(this);
}
public int hashCode() {
	return HashCodeBuilder.reflectionHashCode(this);
}
public boolean equals(Object o) {
	return EqualsBuilder.reflectionEquals(this, o);
}

Wpisywanie za każdym razem ręcznie tych metod odpada, bo jest to dość uciążliwe. Stara dobra metoda "Kopiuj-wklej" też nie bardzo nas satysfakcjonuje, bo też wymaga więcej pracy niż najprostsze możliwe rozwiązanie. Na szczęście autorzy eclipse przewidzieli łatwiejszy sposób.

Szablony kodu

Z szablonów kodu korzysta zapewne każdy użytkownik eclipse (pojawiają się po naciśnięciu Ctrl+Space), ale nie każdy wie, że można dodać własne. Formatka edycji szablonów znajduje się w oknie preferencji (zob. zrzut ekranu 01).

Przycisk "New..." służy do dodania nowego szablonu. Musimy podać nazwę szablonu, kontekst w jakim szablon jest osiągalny (java albo javadoc), jego opis, oraz właściwy szablon. Dla naszego przykładu szablon wygląda ja na zrzucie ekranu 02.

W szablonie możemy użyć szeregu zmiennych specjalnych (np. ${cursor}), które eclipse będzie traktował w szczególny sposób (np. podstawi w ich miejsce sugerowaną wartość). Pełna lista wraz z ich znaczeniem dostępna jest po naciśnieciu przycisku "Insert Variable..."
Użycie szablonu w kodzie

Po zapisaniu szablonu jest on od razu dostępny. Wystaczy zacząć pisać jego nazwę, nacisnąć Ctrl+Space i wybrać go z listy. Ilustruje to kolejny zrzut ekranu (03).

Miłej zabawy przy tworzeniu własnych szablonów!

AttachmentSize
eclipse-tpl-01.png25.72 KB
eclipse-tpl-02.png15.87 KB
eclipse-tpl-03.png15.69 KB

Comments

Opcje przeglądania komentarzy

Wybierz preferowany sposób wyświetlania komentarzy i klinij na "Zapisz ustawienia", aby aktywować zmiany.

Własne szablony kodu w NetBeans

Nie mogłem się powstrzymać, aby dla małego kontrastu nie opisać podobnej funkcjonalności lecz tym razem w moim ulubionym środowisku jakim jest NetBeans.

W NedBeans IDE mamy 2 rodzaje szablonów.

1. Szablony plików
Są to wzorce plików jakie włączamy do projektu. Moga to być wzorce plików tekstowych, .java, .xml, etc ...

Przykładowo chcemy stworzyć sobie wzorzec dla klasy listenera:
a) Do projektu dodajemy nową klasę (File -> New File ... -> Java Class)
b) W nowej klasie wpisujemy interesujące nas elementy wzorca, przy czym korzystamy również z tagów np. __DATE__ niech kod taki wygląda następująco:

/*
 * __NAME__.java
 *
 * Utworzono __DATE__, __TIME__
 */
package Templates.Classes;
import java.awt.event;
/**
 * Projekt XXX
 * Klasa listenera ....
 * @author __USER__
 * @version $Revision: 1.0 $, $Date: __DATE__ __TIME__ $
 */
public class ListenerTemplate implements ActionListener{
    /** Creates a new instance of ListenerTemplate */
    public ListenerTemplate() { /** Kod */}
    public void actionPerformed(ActionEvent e) { /** Kod */ }    
}

c) Teraz w widoku Project klikamy prawym przyciskiem myszki i wybieramy "Save as template ..."
d) Określamy tylko kategorie wzorca np. Java Class i klikamy ok

I już od razu możemy wybrać File -> New File ... -> Java Class -> ListenerTemplate

2. Makra
Tego terminu raczej tłumaczyć nie trzeba. Aby rozpocząć nagrywanie makra wystarczy użyć kombinacji Ctrl+J S, a kończymy używając kombinacji Ctrl+J E. Po zakończeniu automatycznie pojawia się okienko proszące o podanie nazwy makra, możliwa jest też wówczas korekcja makra i nadanie mu skrótu klawiszowego. Przykładowo moje ulubione makro wygląda następująco:

caret-home "System.out.println(\"" caret-forward delete-previous caret-end-line "\"" caret-forward delete-previous ");"

Zamienia ono przykładową linie:
i = 4; na
System.out.println("i = 4;");

Ps.

Zapomniałem jeszcze o 3 rodzaju

3 . Abbreviations
Czyli skróty rozwijane. Przykładowo tekst psfs jest rozwijany do private static final String
Skróty można oczywiście samemu modyfikować i dodawać nowe.

Wszystkie przedstawione udogodnienia opisane są bardzo dobrze w helpie (F1 :)) i dostępne w Tools -> Options