W moim zespole ściśle współpracujemy z kilkoma architektami oprogramowania. Zatwierdzają wszystkie decyzje projektowe naszych projektów, dokonują przeglądów kodu itp.
Nasze projekty składają się głównie z funkcji zaplecza implementowanych w PHP przy użyciu frameworka Symfony 2. Tak więc składniowo kod, konwencje nazewnictwa i struktura projektu wyglądają prawie identycznie jak wyglądałaby Java (Symfony 2 zachęca do takiej struktury). Wspominam o tym, ponieważ w naszym przypadku obowiązują również konwencje specyficzne dla języka Java (jeśli to możliwe).
Niedawno zaproponował, że znajdę coś bardzo dziwnego: wszystkie metody powinny mieć spójników w nazwie np getEntityOrNull
, setValueOrException
etc.
Taka konwencja nazewnictwa wydaje mi się bardzo błędna, ale nie mogę wymyślić żadnych konkretnych argumentów ani artykułów / stron internetowych, które by to kwestionowały.
Wymyśliłem tylko:
- takie informacje powinny znajdować się w adnotacjach metody, takich jak
@return
lub@throws
- użycie koniunkcji („i”, „lub” itd.) w nazwach metod zwykle sugeruje, że zasada pojedynczej odpowiedzialności nie jest właściwie przestrzegana
Jakie są inne konkretne argumenty przeciwko tej konwencji nazewnictwa?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Nie dzieje się tak w przypadku przykładów, które wymieniłeś, w których koniunkcja służy do wyjaśnienia mechanizmu wykorzystywanego do obsługi awarii, a nie do wskazania, że może zrobić coś takiego. Nawet najbardziej wąsko zdefiniowana funkcja może mieć uzasadnione warunki awarii, np. Pęknięcie pustego stosu.
Int32.TryParse
i Int32.Parse
- oba parsują ciąg znaków na liczbę całkowitą, ale pierwsza zwraca wartość logiczną wskazującą sukces, a druga powoduje niepowodzenie.
Try...
, ...OrNull
, ...OrDefault
. @EricLippert To nie jedyna konwencja w .net. Rozważmy Single
Vs. SingleOrDefault
, który jest bardzo blisko do OrNull
PO sugeruje.