Jakich dobrych wskazówek należy przestrzegać podczas pisania klas narzędzi w języku Java?
Czy pakiety powinny być typu „util” czy „utils”? Czy jest to ClassUtil czy ClassUtils? Kiedy klasa jest „Pomocnikiem” lub „Narzędziem”? Narzędzie czy narzędzia? Czy używasz ich mieszanki?
Standardowa biblioteka Java używa zarówno narzędzi, jak i narzędzi:
- javax.swing.Utilities
- javax.print.attribute.AttributeSetUtilities
- javax.swing.plaf.basic.BasicGraphicsUtils
Apache używa różnych narzędzi i programów narzędziowych, chociaż głównie programy narzędziowe:
- org.apache.commons.modeler.util.DomUtil
- org.apache.commons.modeler.util.IntrospectionUtils
- org.apache.commons.io.FileSystemUtils
- org.apache.lucene.wordnet.AnalyzerUtil
- org.apache.lucene.util.ArrayUtil
- org.apache.lucene.xmlparser.DOMUtils
Spring używa wielu klas pomocniczych i narzędzi:
- org.springframework.web.util.UrlPathHelper
- org.springframework.core.ReflectiveVisitorHelper
- org.springframework.core.NestedExceptionUtils
- org.springframework.util.NumberUtils
Jak więc nazwać swoje klasy użyteczności?
W świecie Java nie ma na to żadnej standardowej reguły / konwencji. Jednak wolę dodać „s” na końcu nazwy klasy, o czym wspominał @colinD.
Wydaje się to dość standardowe w stosunku do tego, co robi Mistrz Java API Designer Josh Bloch (kolekcja java, a także kolekcja Google)
Tak długo, jak Helper i Util będą działać, będę nazywać coś Pomocnikiem, gdy będzie miał API, które pomagają osiągnąć określoną funkcjonalność pakietu (biorąc pod uwagę pakiet jako implementację modułu); oznacza to, że narzędzie można wywołać w dowolnym kontekście.
Na przykład w aplikacji związanej z kontami bankowymi wszystkie statyczne interfejsy API specyficzne dla danego numeru będą trafiać do
org.mycompany.util.Numbers
Wszystkie reguły biznesowe specyficzne dla konta, pomagające interfejsom API, trafiłyby do
W końcu chodzi o zapewnienie lepszej dokumentacji i czystszego kodu.
źródło
Podoba mi się konwencja dodawania „s” do nazwy typu, gdy typ jest interfejsem lub klasą, której nie kontrolujesz. Przykłady tego w JDK obejmują
Collections
iExecutors
. Jest to również konwencja używana w Google Collections.Kiedy masz do czynienia z klasą , nad którą masz kontrolę, powiedziałbym, że ogólnie metody narzędziowe należą do samej klasy.
źródło
Myślę, że „utils” powinno być nazwą pakietu. Nazwy klas powinny określać przeznaczenie logiki w nich zawartej. Dodawanie sufiksu -util (s) jest zbędne.
źródło
tld.organization.app.util
Pakiet nie powinien istnieć (może, ale nie powinien), dowolną ilośćtld.organization.app.feature.util
pakietów są perfekcyjnie.Jestem całkiem pewien, że słowa „pomocnicy” i „narzędzia” są używane zamiennie. W każdym razie, sądząc po podanych przez Ciebie przykładach, powiedziałbym, że jeśli nazwa Twojej klasy jest skrótem (lub zawiera skróty, takie jak „DomUtil”), a następnie nazwij swój pakiet „cokolwiek. ). W przeciwnym razie, jeśli ma pełną nazwę zamiast skrótu, nazwij ją „cokolwiek. CokolwiekNarzędzia”.
To naprawdę zależy od ciebie, ale dopóki programiści wiedzą, o czym mówisz, jesteś gotowy. Jeśli jednak robisz to profesjonalnie, jako praca dla kogoś, zapytaj go, jakie są standardy kodowania, zanim skorzystasz z mojej rady. Zawsze postępuj zgodnie ze standardami sklepu, bez względu na wszystko, ponieważ pomoże Ci to utrzymać pracę. :-)
źródło