Nie spodziewajcie się długiego postu, krótko i na temat. Ostatnio w moje ręce wpadł projekt, którego jak kod zobaczyłem to nap oczątku złapałem się za głowę a potem przez pół dnia się z niego śmiałem. Nawet nie chodzi o to, że design był zły, choć do najlepszych on nie należy ale ten temat pominę. Chodzi raczej o nazewnictwo użyte w projekcie.

Odkąd sięgam pamięcią zawsze byłem uczony i sam się uczyłem iż przy tworzeniu projektu korzysta się z unifikowanego nazewnictwa – to znaczy, jak raz podejmę decyzję na temat użycia słowa Get i Set przy właściwościach to będę z niego korzystał cały czas a nie raz robił Retrive a raz Get, raz Update a raz Set. Także jak raz użyłem CAML to będę z niego korzystał. To znaczy istnieją zasady przejrzystego pisania kodu. MS nawet udostępnia narzędzie, które was w tym może wesprzeć – StyleCop. Do tych reguł także zaliczam użycie pewnego języka. Jeżeli piszę Set to nie użyje Ustaw, tak naprawdę nigdy nie użyje Ustaw ale spotkałem się z projektami, gdzie klient wymagał polskiego nazewnictwa klas i metod (sic!). No dobrze, ale do czego zmierzam? Mianowicie do tego fragmentu kodu:

private void DetailsUprawnieniaUprawnienieChanged(object sender, SelectedElementEventArgs e) 
{
	DetailsRole.Visible = false;
	DetailsUprawnienia.Visible = false;

	((RoleFilterAndSelection) FiltrIWybor).UpdateListBoxes(e.Typ, e.Kod); 
}

Przyjrzyjmy się temu uważniej:

  • Nazwa metody: Details Uprawnienia Uprawnienie Changed – sorki, ale co oznacza UprawnieniaUprawnienie oraz co ono ma wspólnego ze słowem Details?
  • Nazwa zmiennych: Details Role, Details Uprawnienia tak, nie mylicie się, Role to polskie słowo :)
  • Nazwa klasy: Filtr i Wybor to już był cios poniżej pasa, myślałem, że to jakiś interfejs czy coś, ale okazało się, że to naprawdę oznacza Filtr i Wybór (sic!)

Aby było tego mało, wyobraźcie sobie solution, które składa się z 15 projektów, każdy projekt ma od kilkunastu do kilkudziesięciu klas i każda jest tak pisana. Polska nazwa klasy a w środku metoda FindAll, albo GetRulesByNazwaUzytkownika, albo na odwrót, angielska nazwa klasy a metody po polsku. Takiego miszmaszu nie widziałem od 2 roku studiów kiedy to przypadkowo spojrzałem na monitor znajomego. I widziałem to tylko raz. Nie wiem jak dla was ale dla mnie to jest jak wejście na wysypisko śmieci. Wierzę, że wy czegoś takiego nie popełniacie, jeżeli popełniacie, to proszę poprawcie to lub w kolejnych projektach użyjcie już z unifikowanego nazewnictwa. No chyba, że waszym celem jest zrobienie własnego obfuscatora :)

A teraz pytanie do was, czy spotkaliście się kiedyś z podobnym kodem? Co wtedy zrobiliście, mogliście wpłynąć na to by już tak nie wyglądał? Ja osobiście nie wiem co mam zrobić, a wiem, że będę musiał coś do niego dopisać i wiem, że z powodu nazw klas i ich metod nie będę wstanie wprowadzić rozsądnego, poprawnego nazewnictwa.

Comments are closed.