In meinem Team arbeiten wir eng mit einigen Softwarearchitekten zusammen. Sie genehmigen alle Entwurfsentscheidungen unserer Projekte, führen einige Codeüberprüfungen durch usw.
Unsere Projekte bestehen hauptsächlich aus Backend-Funktionen, die in PHP mithilfe des Symfony 2-Frameworks implementiert wurden. Syntaktisch gesehen sehen Code, Namenskonventionen und Projektstruktur fast identisch aus wie Java (Symfony 2 unterstützt eine solche Struktur). Ich erwähne dies, weil in unserem Fall auch Java-spezifische Konventionen gelten (falls möglich).
Kürzlich schlug sie etwas , dass ich sehr seltsam finden: alle Methoden sollten Konjunktionen in ihrem Namen zum Beispiel haben getEntityOrNull
, setValueOrException
usw.
Eine solche Namenskonvention fühlt sich für mich sehr falsch an, aber ich kann keine konkreten Argumente oder Online-Artikel / Seiten finden, die dies speziell in Frage stellen.
Das einzige, was ich mir ausgedacht habe, ist:
- Solche Informationen sollten in den Anmerkungen der Methode enthalten sein, z. B.
@return
oder@throws
- Die Verwendung von Konjunktionen ("und", "oder" usw.) in Methodennamen deutet normalerweise darauf hin, dass das Prinzip der Einzelverantwortung nicht ordnungsgemäß eingehalten wird
Was sind andere konkrete Argumente gegen diese Namenskonvention?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Dies ist bei den von Ihnen aufgelisteten Beispielen nicht der Fall, bei denen die Konjunktion verwendet wird, um den Mechanismus zur Behandlung von Fehlern zu verdeutlichen, und nicht, um anzuzeigen, dass er die eine oder andere Sache tun kann. Selbst die am engsten definierte Funktion kann legitime Fehlerbedingungen aufweisen, z. B. das Platzieren eines leeren Stapels.
Int32.TryParse
und Int32.Parse
- beide analysieren einen String in eine Ganzzahl, aber der erstere gibt einen Booleschen Wert zurück, der den Erfolg anzeigt, und der letztere wirft einen Fehler auf.
Try...
, ...OrNull
, ...OrDefault
. @EricLippert Das ist nicht die einzige Konvention in .net. Betrachten Sie Single
vs. SingleOrDefault
, was OrNull
dem vorgeschlagenen OP sehr nahe kommt .