Bejegyzés

Hány táblád van? – Fejlesztési statisztika

Az adatbázis programozás kezdetén a szakértelmet és a munkát a táblák számával tudták mérni. Programozók egymás között és a megrendelők a programozók felé is.

Lássunk egy ilyen statisztikát nálunk:

  • Táblák: 73
  • Mezők: 842
  • Indexek: 103
  • Egyediségi megszorítások: 24
  • Idegen kulcsok: 221
  • Tárolt eljárások: 26
  • Triggerek: 23
  • Kivételek: 9

És ez még csak az egyik projektünk” lehetne hallani 10 évvel ezelőtt. Az adatbázisok normalizálása miatt a táblák száma már nem releváns információ. Persze (m)értéket képvisel két olyan rendszer összehasonlításakor, amikor egy 5 táblás és egy 470 táblás adatbázis találkozik.

De mi lehet akkor a modern kori mérőszám az üzleti logika mértékére? Nálunk a generált kód mennyisége az. Lássuk, mi mennyi:

  • Sorok száma: 171.591 sor
  • Karakterek száma: 5.784.477 betű
  • Fájl bájtok: 13.779.968 bájt

Persze nem kézzel gépeltük ezt be. A kód generált, a saját üzleti logika erre épül. Annak mérete pedig titok…

Kivételek típusai – melyiket dobjam?

A kivételkezelés alatt sok fejlesztő a catch ág megvalósítását gondolja, de ugyanolyan fontos a kivételek eldobása is. Nem szabad azzal megelégedni, hogy dobunk egy ApplicationException-t, sokkal precízebb, ha a típusos esetekben (rossz paraméter, nem jó képformátum) a beépített kivételosztályokat használjuk.

Lássuk, mik ezek:

Kivétel osztály Kiváltás oka
SystemException Futásidejű hiba, a kivételes ősosztálya
AccessException Egy típus elemeléréseinek hibája (metódus, mező, property)
ArgumentException Metódushívás esetén hibás paraméter
ArgumentNullException Metódushívás esetén null paraméter, ha azt a metódus nem tudja kezelni
ArgumentOutOfRangeException Paraméter értéke adott határokon kívül esik
ArithmeticException “Matematikai” hiba
ArrayTypeMismatchException Típusos tömbön végzett művelet egy idegen típussal
BadImageFormatException Rossz képformátum
CoreException Futásidejű kivételes ősosztálya
DivideByZeroException Nullával való osztás
FormatException Argumentum formátuma nem helyes (pl: String.Format)
IndexOutOfRangeException Tömb indexelése túlmutat a határokon
InvalidCastExpression Futásidejű Cast művelet nem hajtható végre
InvalidOperationException Nem megfelelő (idejű?) művelet hívása
MissingMemberException DLL verziószám ütközés, eltérés metódushívás közben
NotFiniteNumberException Nem valós szám (decimal, float; NaN, Infinity)
NotSupportedException Nem létező metódus hívása (reflection?)
NullReferenceException NULL értékű változó által hivatkozott objektum elérése
OutOfMemoryException Memória elfogyás
StackOverflowException Verem műveletek memória elfogyása (rekurízió)

A fenti lista számos lehetőséget kínál a fejlesztőknek a megfelelő kivétel eldobásában. Ezek használata nagyban megkönnyíti a hibakezelést és hibakeresést, a metódus írója pedig publikálhatja, hogy mit várt és mit kapott.