Możesz tworzyć różne szablony kodu Java w Eclipse poprzez
Okno> Preferencje> Java> Edytor> Szablony
na przykład
sysout
jest rozszerzony do:
System.out.println(${word_selection}${});${cursor}
Możesz to aktywować, wpisując, sysout
a następnieCTRL+SPACE
Z jakich użytecznych szablonów kodu Java obecnie korzystasz? Podaj jego nazwę i opis oraz dlaczego jest niesamowity.
Szukam oryginalnego / nowatorskiego zastosowania szablonu, a nie wbudowanej istniejącej funkcji.
- Utwórz rejestrator Log4J
- Uzyskaj kolor SWT z wyświetlacza
- Syncexec - środowisko Eclipse
- Singleton Pattern / Enum Singleton Generation
- Plik do odczytu
- Const
- Wyśledzić
- Formatuj ciąg
- Przegląd kodu komentarza
- Format ciągu
- Wypróbuj wreszcie Lock
- Format wiadomości i18n i dziennik
- Equalsbuilder
- Hashcodebuilder
- Spring Object Injection
- Utwórz FileOutputStream
System.out.println(${word_selection}${});${cursor}
to znaczy? Wygląda na to, że istnieje sposób na wybranie słowa i automatyczne zamknięcie go wsysout
połączeniu, prawda? W jaki sposób?Odpowiedzi:
Poniższe szablony kodu utworzą rejestrator i w razie potrzeby utworzą odpowiedni import.
SLF4J
Log4J 2
Log4J
Źródło .
LIPIEC
źródło
Kilka dodatkowych szablonów tutaj: Link I - Link II
Podoba mi się ten:
plik do odczytu
AKTUALIZACJA : Wersja tego szablonu Java 7 to:
źródło
StandardCharsets.UTF_8
ponadCharset.forName("UTF-8")
.Sformatuj ciąg
MessageFormat - otaczaj zaznaczenie MessageFormat.
To pozwala mi przesunąć kursor do łańcucha, rozwinąć zaznaczenie do całego łańcucha (Shift-Alt-Up), a następnie dwa razy Ctrl-Spacja.
Zablokuj wybór
blokada - otaczaj wybrane linie, próbując w końcu zablokować. Załóżmy obecność zmiennej blokującej.
${line_selection}
Szablony NB pojawiają się w menu Surround With (Alt-Shift-Z).źródło
lock
iunlock
.acquire
irelease
są używane do semaforów, a ich użycie w bloku try-last nie jest tak zalecane jak w przypadku zamków .Wiem, że kopię martwy post, ale chciałem się tym podzielić w celu ukończenia:
Prawidłowa wersja szablonu generowania singletonów, która eliminuje wadliwy projekt podwójnie sprawdzonej blokady (omówiony powyżej i gdzie indziej wspomniany)
Szablon tworzenia singletonów: Nazwij to
createsingleton
Aby uzyskać dostęp do singletonów wygenerowanych za pomocą powyższego:
Szablon referencyjny Singleton: Nazwij to
getsingleton
:źródło
${enclosing_type}
przeznaczeniem?${primary_type_name}
:public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Dołącz fragment kodu, aby iterować
Map.entrySet()
:Szablon:
Wygenerowany kod:
źródło
${}
i że zamiast tego${cursor}
umożliwia „iterację tabulacji” między polami. Dzięki.Dla
log
pomocnej małej ditty do dodania do zmiennej członka.źródło
Utwórz makietę za pomocą Mockito (w kontekście „instrukcji Java”):
I w „członkach typu Java”:
Wyśmiewać pustą metodę, aby zgłosić wyjątek:
Kpuj z pustej metody, aby coś zrobić:
Zweryfikuj próbną metodę o nazwie dokładnie raz:
Sprawdź, czy próbowana metoda nigdy nie jest wywoływana:
Nowa połączona lista korzystająca z Google Guava (i podobna dla skrótów i skrótów):
Używam również ogromnego szablonu, który generuje klasę testową. Oto skrócony fragment, który każdy zainteresowany powinien dostosować:
źródło
Null Checks!
źródło
PreConditions.checkNotNull(...)
Metoda Guava jest bardzo czytelna alternatywa (zwłaszcza z importu statycznych)Jednym z moich umiłowanych jest kazanie :
I śledzenia , ponieważ często używam go do śledzenia:
Właśnie pomyślałem o innym i pewnego dnia znalazłem go w Internecie, const :
źródło
traceout
jest już dostępny w Eclipse assystrace
.Mała wskazówka na temat sysout - chciałbym zmienić nazwę na „sop”. Nic innego w bibliotekach Java nie zaczyna się od „sop”, więc możesz szybko wpisać „sop” i boom, wstawia.
źródło
Zgłaszaj wyjątek IllegalArgumentException ze zmienną w bieżącym zakresie (illarg):
Lepszy
źródło
Nic szczególnego do tworzenia kodu - ale całkiem przydatne do recenzji kodu
Mam mój szablon coderev low / med / high, wykonaj następujące czynności
A potem w widoku Zadania - pokaże mi wszystkie komentarze do przeglądu kodu, które chcę przywołać podczas spotkania.
źródło
Więcej szablonów tutaj .
Obejmuje:
źródło
slf4j Logowanie
źródło
Własność fasoli
PropertyChangeSupport
źródło
Po Javie 7 doskonałym sposobem na skonfigurowanie programów rejestrujących, które potrzebują (lub preferują) statyczne odniesienia do otaczającej klasy, jest użycie nowo wprowadzonego API MethodHandles w celu uzyskania klasy środowiska uruchomieniowego w kontekście statycznym.
Przykładowy fragment kodu dla SLF4J to:
Oprócz tego, że jest prostym fragmentem w dowolnym środowisku IDE, jest również mniej kruchy, jeśli przefakturujesz pewną funkcjonalność do innej klasy, ponieważ przypadkowo nie będziesz nosić przy sobie nazwy klasy.
źródło
Wywołaj kod w wątku GUI
Wiążę następujący szablon ze skrótem,
slater
aby szybko wysłać kod w wątku GUI.źródło
Podczas testowania kodu czasami pomijałem usunięcie niektórych syso . Zrobiłem sobie szablon o nazwie syt .
Przed kompilacją zawsze sprawdzam moje TODO i nigdy nie zapomnę ponownie usunąć pliku System.out.
źródło
strf -> String.format("msg", args)
dość proste, ale oszczędza trochę pisania.źródło
String.format("${string}",${objects})
ponieważ Eclipse pozwala mi tabulować między moim ciągiem znaków a moją listą obiektów.String.format(${word_selection}${},)${cursor}
najpierw wybierz ciąg, a następnie użyj na nim „sf”. Dodaj% s i tak dalej ...Uzyskaj kolor SWT z bieżącego wyświetlacza:
Omówienie z syncexec
Użyj wzorca projektowego singleton:
źródło
I adaptator equalsbuilder, hashcodebuilder:
źródło
Szablon deklaracji rejestratora jest świetny.
Tworzę również linfo, ldebug, lwarn, lerror dla poziomów dziennika, których używam częściej.
lerror:
źródło
Stwórz wszystko na wydarzenie
Ponieważ wydarzenia w Java są dość trudne do utworzenia - wszystkie interfejsy, metody i rzeczy do napisania tylko dla jednego zdarzenia - stworzyłem prosty szablon, aby stworzyć wszystko, co potrzebne dla 1 zdarzenia.
Jeśli masz zdarzenia, które współużytkują jeden
EventObject
, po prostu usuń niestandardowe wstawione przez szablon i zmień odpowiednie częściraise___()
ion____()
.Napisałem ładny, mały, elegancki mechanizm tworzenia zdarzeń za pomocą ogólnego interfejsu i ogólnej klasy, ale nie działałoby to z powodu sposobu, w jaki Java obsługuje ogólne. = (
Edycja : 1) Natknąłem się na problem polegający na dodawaniu / usuwaniu wątków przez słuchaczy podczas wydarzenia. Nie
List
można go modyfikować podczas używania, więc dodałemsynchronized
bloki, w których lista słuchaczy jest otwierana lub używana, blokując samą listę.źródło
Wstaw metody testowe, które należy podać kiedy
Ostatnio widziałem podobną wersję do tej, kiedy programowałem w parę z bardzo dobrym programistą i przyjacielem i myślę, że może to być miły dodatek do tej listy.
Ten szablon utworzy nową metodę testową w klasie, zgodnie z paradygmatem Danych - Kiedy - To, a następnie z rozwoju opartego na zachowaniu (BDD) w komentarzach, jako przewodnika po strukturze kodu. Rozpocznie nazwę metody od „powinien” i pozwoli ci zastąpić resztę nazwy fikcyjnej metody „CheckThisAndThat” najlepszym opisem odpowiedzialności za metodę testową. Po
// Given section
wpisaniu nazwy, TAB zabierze Cię prosto do , więc możesz zacząć wpisywać swoje warunki wstępne.Mam odwzorowane na trzy litery „tst”, z opisem „Metody testowe należy podać kiedy”;)
Mam nadzieję, że okaże się tak przydatny, jak ja, kiedy go zobaczyłem:
źródło
Wtrysk wiosenny
Wiem, że to trochę za późno na grę, ale oto jeden, którego używam do Spring Injection w klasie:
źródło
Oto konstruktor dla klas, które nie są możliwe do utworzenia:
Ten dotyczy wyjątków niestandardowych:
źródło
Podoba mi się wygenerowany komentarz klasy w ten sposób:
„Ja ...” natychmiast zachęca programistę do opisania tego, co robi klasa. Wydaje się, że poprawiam problem nieudokumentowanych klas.
I oczywiście $ Id $ jest użytecznym słowem kluczowym CVS.
źródło
Wiele razy korzystałem z tych fragmentów
null
wartości i pustych ciągów.Używam „testu argumentów” - szablonów jako pierwszego kodu w moich metodach do sprawdzania otrzymanych argumentów.
testNullArgument
Możesz zmienić komunikat wyjątku, aby pasował do standardu firmy lub projektu. Polecam jednak komunikat zawierający nazwę niepoprawnego argumentu. W przeciwnym razie program wywołujący twoją metodę będzie musiał zajrzeć do kodu, aby zrozumieć, co poszło nie tak. (ZA
NullPointerException
bez komunikatu powoduje wyjątek z dość bezsensownym komunikatem „null”).testNullOrEmptyStringArgument
Możesz również ponownie użyć powyższego szablonu sprawdzania wartości zerowej i zaimplementować ten fragment kodu, aby sprawdzać tylko puste ciągi. Następnie użyjesz tych dwóch szablonów do wygenerowania powyższego kodu.
Powyższy szablon ma jednak problem polegający na tym, że jeśli argument in jest ostateczny, będziesz musiał poprawić wygenerowany kod (
${varName} = ${varName}.trim()
nie powiedzie się).Jeśli używasz wielu końcowych argumentów i chcesz sprawdzić puste ciągi, ale nie musisz przycinać ich jako części kodu, możesz zamiast tego zrobić to:
testNullFieldState
Stworzyłem również fragmenty do sprawdzania zmiennych, które nie są wysyłane jako argumenty (duża różnica to typ wyjątku, który teraz jest
IllegalStateException
zamiast niego).testNullOrEmptyStringFieldState
testArgument
Jest to ogólny szablon do testowania zmiennej. Kilka lat zajęło mi naprawdę nauczenie się doceniać ten, teraz go używam (oczywiście w połączeniu z powyższymi szablonami!)
Wpisujesz nazwę zmiennej lub warunek, który zwraca wartość, następnie operand („==”, „<”, „>” itd.) I inną wartość lub zmienną, a jeśli test się nie powiedzie, wynikowy kod zgłosi wyjątek IllegalArgumentException.
Przyczyną nieco skomplikowanej klauzuli if, z całym wyrażeniem zawartym w „! ()”, Jest umożliwienie ponownego użycia warunku testowego w komunikacie wyjątku.
Być może wprowadzi to w błąd kolegę, ale tylko wtedy, gdy będzie musiał spojrzeć na kod, czego nie będą musieli, jeśli wprowadzicie tego rodzaju wyjątki ...
Oto przykład z tablicami:
Otrzymujesz ten wynik, wywołując szablon, wpisując „from.length” [TAB] „== to.length”.
Rezultat jest o wiele zabawniejszy niż „ArrayIndexOutOfBoundsException” lub podobny i może faktycznie dać użytkownikom szansę rozwiązania problemu.
Cieszyć się!
źródło
Używam tego do MessageFormat (przy użyciu Java 1.4). W ten sposób jestem pewien, że nie mam żadnych konkatenacji, które trudno wyodrębnić podczas przeprowadzania internacjonalizacji
i18n
Również do logowania:
log
źródło
Moje ulubione to ...
1: Javadoc, aby wstawić dokument dotyczący metody wstrzykiwania obiektu Spring.
2: Okno debugowania, aby utworzyć FileOutputStream i zapisać zawartość bufora w pliku. Używane, gdy chcesz porównać bufor z poprzednim uruchomieniem (używając BeyondCompare) lub jeśli nie możesz wyświetlić zawartości bufora (poprzez inspekcję), ponieważ jest zbyt duży ...
źródło