Následující postupy a obraty jsou tak nevýhodné, že by se neměly objevit v žádnám školním programovém díle odevzdávaném na MFF UK. Každý absolvent 1. ročníku Bc. studia by se jich měl vyvarovat bez ohledu na programovací jazyk..
"Kolekce", knihovní funkce: zejména v jazyku Java se setkávám
s přístupem, že ani triviální datovou strukturu studenti neprogramují a použijí
některou z vestavěných tříd z knihovny Collections.
Třídění pěti prvků pak znamená, že se musí nadeklarovat zvláštní třída (jen za tímto
účelem!), komparátor a nakonec zavolat třídící rutinu.
Celočíselné mocniny: druhou mocninu čísla (komplexního, reálného) opravdu není dobré počítat pomocí funkce pow()! Obzvlášť posloupnosti kódu jako:
double a, b; ... double len = Math.sqrt( Math.pow( a, 2 ) + Math.pow( b, 2 ) ); double xyz = Math.pow( a, 2 ) * Math.pow( b, 2 );jsou iritující. Snad jedině pro opravdu velké exponenty by se o tom dalo uvažovat.
Vyhodnocování polynomu: opravdu nikdy už si nepřeji vidět kód typu:
protected double[] coef; protected int degree; double evaluate ( double x ) { double val = coef[0]; for ( int i = 1; i <= degree; i++ ) val += coef[i] * Math.pow( x, i ); return val; }.. hádejte proč?!
Tipněte si, kolikrát je výše uvedená implementace pomalejší než ta "rozumná":
a. 2x
b. 10x
c. 20x
Další perla s umocňováním - kolik chyb je v tomto malém kousku kódu:
public double pow ( double x, double k ) { double y = 1; for ( int i = 0; i < k; i++ ) y = y * x; return y; }
Používejte výčtové typy (nebo aspoň celočíselné konstanty): pomocí stringů je to neefektivní a můžete se snadno splést.. Takhle by to tedy vypadat nemělo:
String type = "Circle"; ... if ( type.equals( "Circle" ) ) { ... } else if ( type.equals( "Rectangle" ) ) { ... } else if ( type.equals( "Triangle" ) ) { ... } ...
Triviální postupy: je mnoho triviálních postupů ("vzorečků"), které by každý měl znát, abychom pak v kódu neviděli:
double center = Math.min( a, b ) + ( Math.max( a, b ) - Math.min( a, b ) ) / 2;
Copyright (C) 2007-2012 J.Pelikán,
last change: $Date: 2013-11-22 23:48:14 +0100 (Fri, 22 Nov 2013) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz