Niezręczne, otwarte pytanie, ale to problem, z którym zawsze się spotykam:
Oprogramowanie, które jest łatwe w utrzymaniu i obsłudze, jest dobrze zaprojektowane. Próba uczynienia projektu intuicyjnym oznacza nazywanie komponentów w taki sposób, aby następny programista mógł móc wywnioskować ich działanie. Dlatego nie nazywamy naszych klas „Type1”, „Type2” itp.
Podczas modelowania koncepcji rzeczywistej (np. Klienta) jest to na ogół tak proste, jak nazywanie swojego typu po modelowaniu koncepcji rzeczywistej. Ale kiedy budujesz abstrakcyjne rzeczy, które są bardziej zorientowane na system, bardzo łatwo zabraknie imion, które są zarówno łatwe do odczytania, jak i łatwe do strawienia.
Gorzej (dla mnie), gdy próbuję nazwać rodziny typów, z typem bazowym lub interfejsem, który opisuje, co muszą zrobić komponenty, ale nie sposób ich działania. To naturalnie prowadzi do każdego typu pochodzącego próbuje opisać smak realizacji (np IDataConnection
oraz SqlConnection
w .NET Framework), lecz jak można wyrazić coś skomplikowane jak „działa przez odbicie i szuka konkretnego zestawu atrybutów”?
Potem, kiedy już w końcu wybrał nazwę typu uważasz opisuje to, co próbuje zrobić, twój kolega pyta „WTF czy to DomainSecurityMetadataProvider
faktycznie zrobić? ”
Czy są jakieś dobre techniki wyboru dobrej nazwy dla komponentu lub jak zbudować rodzinę komponentów bez uzyskiwania mętnych nazw?
Czy są jakieś proste testy, które mogę zastosować do nazwy, aby lepiej wyczuć, czy nazwa jest „dobra” i czy powinna być bardziej intuicyjna dla innych?