Pavel Müller
6.10.2009

Eclipse efektivně (2.) – Quick Fix



V dnešním díle seriálu pro líné vývojáře (lenost je totiž motorem lidstva), se zaměříme na to, co nám Eclipse nabízí pod pojmy Quick Fix a Quick Assist. Sám nemám o rodílu mezi dvěma pojmy jasno a zdá se mi, že ani samotný Eclipse ne. Je možné, že původně měl Quick Fix sloužit jako rychlá nabídka možností, ale já to používám úplně stejným způsobem jako Content Assist. Tedy k rychlejší tvorbě a úpravám kódu.

Pojďme se tedy podívat, co lze s Quick Fixem a Quick Assistem dělat a jak se používají. Kdykoli Java editor zaznamená v kódu chybu, červeně jí podtrhne a na levém okraji označí žárovičkou. Po kliknutí na žárovičku nebo po stisku Ctrl+1 se zobrazí nabídka, co s danou situací můžeme dělat. Možností je v Eclipse opravdu nepřeberné množství. Zde přehled toho, co považuji za nejužitečnější:

Rychlý import

Eclipse poskytuje spoustu cest k vygenerování vhodného importu: Content Assist, chytrý copy-paste, Organize Imports (Ctrl+Shift+O) a i Quick Fix. Vlastně si nepamatuju, že bych někdy v poslední době psal import ručně. S Quick Fixem je to jednoduché. Stačí kliknout na žárovičku nebo stisknout Ctrl+1 a vybrat vhodný import.

 

import

 

Opravy chyb – přetypování

Okamžik, kdy Quick Fix hodně používám, je když potřebuju napsat přetypování. Je to pravděpodobně jenom takový můj zvyk, kdy si šetřím i tu práci napsat závorky a typ. Prostě napíšu kód bez přetypování a pak pomocí Quick Fixu si nechám přiřazení „opravit“. Jsem tak zas o kousek rychlejší, než kdybych to psal ručně 🙂

 

cast

 

Vývoj shora dolů

Nebo jakým je to vlastně směrem. Prostě implementuju například servisní vrstvu a potřebuju nějakou metodu na DAO objektu. Ale neudělám to tak, že si tu metodu vyvinu předem, ale nechám si jí Quick Fixem vygenerovat. Například píšu autentizaci ve své aplikaci a potřebuji metodu findByUsername() na UserDao. Neudělám to ale tak, že bych přešel do jiné třídy a začal si to připravovat nejdřív tam. Naopak. Zůstanu ve své vrstvě a nechám si pomoc s doděláváním chybějících metod později. To samé funguje pro privátní metody v té samé třídě a řadu dalších podobných případů.

 

createMethod

 

Teď tedy máme vygenerovanou metodu na rozhraní, ale je potřeba doplnit implementaci ve třídě HibernateUserDao. A opět jsme líní, tak si necháme metodu předgenerovat. Tento způsob používám i třeba v situaci, kdy existující třídě nechám implementovat rozhraní navíc a potřebuju doplnit několik metod najednou.

 

methods

 

Změna v signatuře metody

Stejně jako v případě nové metody lze i změny v parametrech a návratových typech metody dělat pomocí Quick Assistu. Zjistíme např. že do metody z minulého příkladu potřebujeme ještě poslat parametr s heslem. Opět můžeme postupovat obráceným směrem proti kompilátoru. Dokonce se Eclipse snaží hádat název parametru, který bude v tomto případě password. Můžeme parametry i odebírat a měnit návratové hodnoty.

 

addParam

 

Ošetření výjimek

Pokud metoda vyhazuje výjimku, která se musí ošetřit dává nám Eclipse na výběr několik možností. Můžeme si nechat vygenerovat try-catch blok a nebo nastavit throws na metodě. Případně pokud již existuje try-catch blok, tak Eclipse nabídne možnost, aby se nová výjimka připojila k existujícímu bloku.

 

throws

 

Odstranění bloku

Někdy se hodí rychle a bezpečně odstranit obklopující blok kódu. Následující příklad ukazuje možnost odstranění try-catch bloku.

 

remove

 

Závěr

Jako v minulém díle nezbývá než konstatovat, že pokud chceme být efektivní, je potřeba se naučit možnosti, které nabízí Quick Fix a Quick Assist. V příštím díle se budeme věnovat šablonám kódu (Code Templates). Předchozí díl: Eclipse efektivně (1.) – Content Assist

Vaše emailová adresa nebude zveřejněna

Komentáře

Děkujeme za váš komentář
Další
  • Bez quick assist si uz neumim predstavit, ze budu psat kod. Ctrl + 1 je nejoblibenejsi zkratka. Dalsi velmi zajimava je napr. ctrl + t - jdi do implementace, kterou jsme v netbeans hledali a nenasli.

  • plzi

    Já to taky ještě používám pro generování deklarace proměnné/atributu např pro: public Collection getSomeCollection(){...} myCollection = getSomeCollection(); a QuickFix na proměnnou myCollection jí dokáže rychle vytvořit jako lokální proměnnou nebo atribut třídy - se správným typem podle návratové hodnoty metody getSomeCollection(). Nemusím zjišťovat, jaký typ metoda vrací.

  • plzi

    sorry, ale nevložily se 'linefeedy' :(

  • bubbles.way

    Eclipse je pojem (casto bych rekl ze neopravnene). Bohuzel pro me ma oproti Netbeans ci Intellij jednu zasadni nevyhodu kvuli ktere jsem jej musel naprosto zavrhnout (temer :-) ). V adresari se zdrojaky nemohu vytvaret eclipse soubory ".project". Proto prichazi na radu "mountovani" zdrojaku do projektu z file systemu. Bouhuzel, jakakoliv prace s version control (SVN, CVS, Mercurial apod.) pak v Eclipsu nefunguje. Netbeans i Idea pouzvaji jinou filozfii a zde problem neni. Lehce se da oddelit misto se se zdrojaky (jejich nezavislost na IDE) a misto kde mam projektove a build fily. Pokud nekdo zna nejaky figl jak to obejit, budu velmi rad za kazdou radu.

  • @plzi Díky za tip. Tenhle quick fix znám, ale vůbec nepoužívám. Zkusím se to naučit. Asi to dost urychlí některé situace.

  • @bubbles.way Tenhle seriál určitě nemá za cíl vyvolat nějaký flame war na téma který IDE je lepší. Jinak s těma projektama máš pravdu. Taky mi to vadí. Hlavně kvůli SVN a Mavenu.

  • Jak já říkám: "Softwarový vývoj je týmový sport". Takže IDE si v zájmu projektu člověk obvykle nemůže volit, ale musí se podřídit nějakému projektovému standardu. Jinak bychom asi spálili velkou část budgetu na zbytečnou konfiguraci mnoha prostředí a neschopnost si navzájem v týmu pomoc.

  • Stefan

    bubbles.way V adresari se zdrojaky nemohu vytvaret eclipse soubory ".project". Co vás k tomu nutí ?

  • dravis

    No na spravu a nastavovanie IDE som na jednom projekde zazil VirtualBox resp. VMware player....kazdy novo prichodzi clen tymu si stiahol image kde mal vsetky potrebne veci pripravene akurat sa menili prihlasovacie udaje do cvs/svn . Prislo mi to velmi zaujimave hlavne ked mate na projekte relativne vysoku fluktuaciu alebo potrebujete lokalne prostredie, ktore sa nekonfiguruje lahko prikladom moze byt oracle...

  • wellczech

    @bubbles.way: Tohle mi taky vadilo. A problém jde vyřešit tak, že soubory specifické pro eclipse nezahrneš do sledování SVN. Myslím, že v preferences je nastavení, které soubory se mají ignorovat, je tam mimojiné předdefinováno, že adresáře ".svn" se mají ignorovat. Mělo by stačit tam přidat právě i ".project".

  • Michal

    Ja este okrem spominanych, quick fix pouzivam napriklad na vytvorenie/priradenie parametrov konstruktora/metod do clenskych premennych. Staci ctrl + 1 na parameter metody. Takisto na equals metodu ponukne moznost vymenit strany podmienky... takychto 'ficuriek' je viacero.

  • @bubbles.way: pokud používáte maven pak je šikovné nakonfigurovat maven-eclipse-plugin. Do SVN není potřeba ukládat žádný IDE specifický soubor, jen po checkoutu vygenerujete pomocí eclipse pluginu projekt, který importujete do eclipse bez kopírování zdrojáků do workspace. Eclipse pak samozřejmě podporuje práci s SVN i CVS. Pokud jiný vývojář stejného projektu používá Ideu pak použije analogicky maven-idea-plugin.