Mistři v programování na #hovnokod

když jste líní přepisovat u konstanty modifikátor private na public...

class GenericValidationClass {
    private static final String VALIDATION_PARAM_NAME = "businessValidations";
...
}

// somewhere else in the SAME CODEBASE!!!
    public static String getBusinesseValidationParamName() {
        try {
            Field field = GenericValidationClass .class.getDeclaredField("VALIDATION_PARAM_NAME");
            if (field != null) {
                field.setAccessible(true);
                return (String) field.get(GenericValidationClass .class);
            }
        } catch (NoSuchFieldException ex) {
            Logger.getLogger(ProcessingClass.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(ProcessingClass.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(ProcessingClass.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(ProcessingClass.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

Anonymous,

Code review comment: Digits here repeat, if you create constant for them and give them self-explanatory name, it would make code more readable and easier to modify, and less prone to errors when refactoring Toto byla uprava

//before
 if (birthDate.length() >= 6) {
                     builder.append(dash);
                     builder.append(birthDate.substring(4, 6));
 }

//after
final int birthDateStrLen = birthDate.length();
  if (birthDateStrLen >= 8) {
             builder.append(dash);
             builder.append(birthDate.substring(6, 8));
   }

Anonymous,

public String animalCheck (String animal){
       return this.animals.contains(animal) ? "ano,v zoo je " + (animal) : "ne, v zoo neni " + (animal);
    }

Anonymous,

Hodně zvrácená práce se StringBuilderem. Provedeme dvakrát string concat pluskem, pro jistotu tak, aby to nemohlo JVM optimalizovat. Provedeme jeden append a můžeme servírovat prázdné složené závorky, jelikož i ten regexp je vadný: I na poměry Java stringu lze mluvit o extrémním přemnožení zpětných lomítek. Měl by vypadat nějak takto: "^\\w+\\{(.*)}$".

@Override public String toString() {	
	final Matcher m = Pattern.compile("^\\\\w+\\{\\(.*\\)\\}$").matcher(super.toString());	
	final String parent = m.matches() ? m.group(1) + ", " : "";	
	final StringBuilder sb = new StringBuilder("CensoredNameDto{" + parent)	
		.append("}")	
		;
	return sb.toString();	
}	

Anonymous,

Jak jsem "zprasil" kód zcela záměrně. Na pohled to vypadá zle: Jeden node se hledá pomocí dao.findAll(). Oproti původnímu úhlednému kódu, který hledal pouze TreeNode s ID 0, je to ovšem mnohonásobně efektivnější, když se pak téměř ze všech uzlů obsažených v databázi vytváří stromová struktura :)

	List<TreeNode> allNodes = dao.findAll();
	TreeNode root = allNodes.stream()
			.filter(x -> x.getId() == 0L)
			.findAny().orElse(null);

Anonymous,