Régi motoros c++ programozók egy részében gyakran meg szokott fogalmazódni az elhatározás, hogy bizony meg kellene tanulni Microsofték csoda-szuper találmányát a c#-ot. Az, hogy most ez mennyiben koppincs, mennyiben saját találmány, más téma. Számos oktatókönyv létezik a témában, de sajnos a legtöbb már ott elveszi a gyakorló szoftverfejlesztő kedvét az egésztől, hogy elkezdi elmagyarázni, mi az osztály és objektum között a különbség és hogyan kell megírni egy ciklust.
Ha egy kitartóbb egyed mégis átlapozza ezeket a részeket, akkor kap cserébe egy gyenge kis ismertetőcskét a Garbage Collector-ról, DataSet-ekről, Event-ekről és Delegate-ekről mindenféle érdekes és új dologról, amikről minden kiderül, csak az nem, hogy ezek valójában miért is annyira csodálatosak.
Miután azonban c++ fejlesztőként elhatároztam magam a nagy váltásra, gondoltam csak megkísérlem újra a lehetetlent és megpróbálok könyvből kiokosodni egy kicsit. Hosszas keresgélés után választásom Bill Wagner könyvére az Effective C#-ra esett. Már a tartalomjegyzék olvasgatásakor tudtam, hogy végre egy olyan könyv, ami tényleg programozóknak készült és nem kezdő középiskolásoknak. Nem magyaráz el semmi olyat, amit már úgyis tud bárki, aki életében írt már egy "Hello World"-nél bonyolultabb programot. Cserében jól érthetően, 50 tippen keresztül elmondja, hogy mik a c# előnyei, milyen tipikus hibákat követnek el a c++ programozók, amikor a régi gondolkodásmóddal próbálnak meg problémákat megoldani és hogy mik azok a minták, amiket ajánlott alkalmazni vagy elkerülni.
Az, hogy a tippeknek mekkora része hordoz valódi újdonságot és mennyi az, amelyik teljesen magától értetődő nyilván egyénenként változik, azonban szerintem még azoknak is érdemes a könyvet referenciaként a polcon tartani, akik már szinte mindent tudnak az ott leírtakból.
Ízelítőül néhány tipp a tartalomjegyzékből:
Item 1 - Always Use Properties Instead of Accessible Data Members.
Item 24 - Prefer Declarative to Imperative Programming
Item 27 - Avoid Icloneable.
Item 38 - Utilize and Support Data Binding.
Item 42 - Utilize Attributes to Simplify Reflection.
A könyv hátányaként két dolgot lehet megemlíteni. Egyik az, hogy aránylag régi, ezért csak a c# 1.0-val foglalkozik, a 2.0-s verziót csak megemlíti, az azutáni változatoknak pedig akkor még híre sem volt, amikor íródott. A másik probléma a magyar kiadásé, egy-két fogalmat sikerült annyira trükkösen lefordítani, hogy bizony erősen kellett gondolkozni, amíg rájöttem, mire is gondolhattak.