java.util
, hu.elte.java.course2.practical10
ArrayList
, LinkedList
, String
toString
, add
, multipleByTwo
String
, Comparator
add
, remove
, equals
, clone
elements
(mondjuk egy lista esetén), employees
(mondjuk egy cég esetén)lokális változó neve tömör, és utal a változóban tárolt információra, vagy legalább a változó típusára, a különböző célokra használt változók egyértelműen megkülönböztethetők
// megfelelő:
String str; // ha egy Stringet kell összerakni
int i; // ciklusváltozó esetén
String part1, part2, part3; // ha mondjuk egy tömb első, második és harmadik elemét mentjük ki beléjük, tehát közös célra használatosak
// kerülendő:
String st, str; // a kettő együtt
String str1, str2, str3; // ha a három változónak később semmi köze egymáshoz
int a; // nem utal sem a szerepére, sem a típusára
a hallgató által írt elnevezések vagy egységesen magyar, vagy egységesen angol nyelvűek
catch
ága, ha rövid) elfogadható a nyitó kapcsos, utasítás és záró kapcsos egy sorbannincs hosszú, több részletből álló számítás, ami ismétlődne
// rossz
if ( /*...*/ ) {
String result = "A person whose name is " + name + " and who has a " +
salary + "$ salary bought a " + price + "$ car".
} else {
String result = "A person whose name is " + name + " and who has a " +
salary + "$ salary bought a " + price + "$ boat".
}
// jobb
String vehicle;
if ( /*...*/ ) {
vehicle = "car";
} else {
vehicle = "boat";
}
String result = "A person whose name is " + name + " and who has a " +
salary + "$ salary bought a " + price + "$ " + vechicle.
nincs 1000 sornál hosszabb osztály
String
, Integer
.String
) ne másoljunka kód nem számítja ki többször ugyanazt, ha közben a kiszámítandó érték biztosan nem változott
pl. rossz
Point first = line.getPoints()[0];
Point second = line.getPoints()[1];
Point third = line.getPoints()[2];
...
// Itt a getPoints() egy potenciálisan bonyolult számítást végző művelet, és feleslegesen hívódik meg háromszor. Az utasítássor elején egyszer kellene meghívni, és az eredményül kapott tömböt lementeni, aztán azt feldolgozni.
int len = line.getPoints().length;
for (int i = 0; i < len; ++i) {
Point point = line.getPoints()[i];
...
}
// Itt minden iterációban meghívódik a getPoints() utasítás, teljesen feleslegesen. Itt is kimenthető lenne az értéke egy lokális változóba előre.
// Figyelem! A fenti példák természetesen NEM csak tömbök esetén igazak, bármilyen visszatérési értékű metódus esetén felléphet, ha tudjuk, hogy az eredmény minden hívásnál ugyanaz.
ha tudhatóan sok vagy hosszú, illetve ha ismeretlen darabszámú Stringeket konkatenálunk össze, azokat StringBuilder
rel kell összekapcsolni pl. ha egy fájl sorait fűzzük össze, és nem tudjuk, milyen hosszú a fájl
statikus mezőt vagy statikus metódust nem hivatkozunk objektumreferencián keresztül
pl. rossz
Integer i = 5;
int j = i.parseInt("123");
STATIC_FINAL_VARIABLE
MyData<T>
, Set<E>
, Map<K, V>
Closeable
interfészt megvalósító osztályok (pl. Scanner
, PrintWriter
) objektumain minden esetben meghívja a használatuk végén a close()
metódust try
-catch
-finally
vagy try-with-resources szerkezettel