Advanced Java? Bullshit!

Mások forráskódjával dolgozni mindig tanulságos volt. A legjobban azt szeretem, mikor tanulhatok belőle. Most is vár pár open source project, hogy alaposabban megismerkedjek a forráskódjával, hogy ellessek megoldásokat és fejlesszem magam.

Sajnos azért ennek az ellenkezőjét is megtapasztalom.

néha úgy érzem, hogy naiv vagyok. Azt gondolom hogy vannak olyan programozástechnikai megoldások, amik csak a kezdők számára nem mennek rutinból. ezek egyike, mikor java-ban konstans objektummal szemben végzel kommutatív (felcserélhető) műveleteket (például equals).

Mire is gondolok:

1if (moreformats != null && moreformats.length() > 0 && !moreformats.equalsIgnoreCase("All"));

Mi ezzel a gond? Semmi. Működik és jól végzi a dolgát. A gond akkor merül fel, mikor olvasnod kell. Kicsit nehézkes. Van ennél egy olvashatóbb megoldás is:

1if(! "All".equalsIngosrcase(moreformats));

A kulcs az, hogy konstans objektumnak küldve üzenetet nem kell foglalkoznunk a NULL ellenőrzéssel.

Nem tűnik nagy nyerésnke, de ha egy kicsit komplexebb példát veszünk jobban látszik a különbség.

1if ((filterName != null && filterName.length() > 0 && !filterName.equalsIgnoreCase("All")) || 
2        (moreformats != null && moreformats.length() > 0 && !moreformats.equalsIgnoreCase("All")) ||
3    (moredate != null && moredate.length() > 0 && !moredate.equalsIgnoreCase("All")) ||
4    (secondLang != null && secondLang.length() > 0 && !secondLang.equalsIgnoreCase("All"))) {
5                out.println(" | " + labels.getString("from"));
6}
1        if ((!"All".equalsIgnoreCase(filterName)) || 
2            (!"All".equalsIgnoreCase(moreformats)) ||
3            (!"All".equalsIgnoreCase(moredate)) ||
4            (!"All".equalsIgnoreCase(secondLang))) {
5            out.println(" | " + labels.getString("from"));
6        }
Apr 10, 2012
comments powered by Disqus

Links

Cool

RSS