W Javie statyczne zmienne końcowe są stałymi, a konwencja jest taka, że powinny być pisane wielkimi literami. Widziałem jednak, że większość ludzi deklaruje rejestratory małymi literami, co pojawia się jako naruszenie w PMD .
na przykład:
private static final Logger logger = Logger.getLogger(MyClass.class);
Po prostu wyszukaj w Google lub SO „statyczny rejestrator końcowy”, a zobaczysz to sam.
Czy zamiast tego powinniśmy używać LOGGERA?
private static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);
Odpowiedzi:
Odwołanie do programu rejestrującego nie jest stałą, ale ostatecznym odniesieniem i NIE powinno być pisane wielkimi literami. Stała WARTOŚĆ powinna być pisana wielkimi literami.
źródło
Aby dodać więcej wartości do odpowiedzi crunchdog, Przewodnik po stylu kodowania Java zawiera to w paragrafie 3.3 Nazewnictwo pól
Po tej konwencji,
logger
tostatic final
odwołanie do obiektu, jak wskazano w pkt 2, ale dlatego, że jest następnie „.
” za każdym razem go używać, to nie można uznać za stałą, a zatem powinny być małe.źródło
Object
i możesz wywołać metodę taką jak.equals
na nich..
również.Od wersji skutecznej Java, wyd. 2,
Podsumowując, stała == statyczny finał, plus jeśli jest to referencja (w porównaniu z typem prostym), niezmienność.
Patrząc na rejestrator slf4j, http://www.slf4j.org/api/org/slf4j/Logger.html
Jest niezmienny. Z drugiej strony rejestrator JUL jest zmienny. Rejestrator log4j jest również modyfikowalny. Tak więc, aby być poprawnym, jeśli używasz log4j lub JUL, powinien to być „logger”, a jeśli używasz slf4j, powinien to być LOGGER.
Zauważ, że strona slv4j javadocs, do której prowadzi link powyżej, zawiera przykład, w którym używają „logger”, a nie „LOGGER”.
Są to oczywiście tylko konwencje, a nie reguły. Jeśli akurat używasz slf4j i chcesz użyć „loggera”, ponieważ jesteś przyzwyczajony do tego z innych frameworków, lub jeśli łatwiej jest pisać lub dla czytelności, śmiało.
źródło
Logger
interfejs jest niezmienny ? Tylkofinal class
(jakString
lubInteger
) może zagwarantować niezmienność. Nawet jeśli nie możesz znaleźć żadnej modyfikowalnej implementacji SLF4JLogger
, nikt nie może Cię powstrzymać przed napisaniem jej.Podoba mi się podejście Google ( Google Java Style )
Przykłady:
źródło
private static final Logger logger = Logger.getLogger(Finalizer.class.getName());
Jeśli używasz zautomatyzowanego narzędzia do sprawdzania standardów kodowania, które narusza wspomniane standardy, należy je naprawić. Jeśli używasz zewnętrznego standardu, napraw kod.
Konwencja w Sun Java jest wielka dla publicznych stałych statycznych. Oczywiście logger nie jest stały, ale reprezentuje zmienną rzecz (inaczej nie byłoby sensu wywoływać w nim metod w nadziei, że coś się wydarzy); nie ma określonego standardu dla niestałych pól końcowych.
źródło
Jeśli google to, może się okazać, że w niektórych przypadkach rejestratory nie są zdefiniowane jako statyczny końcowy. Dodaj do tego szybkie kopiowanie i wklejanie, a to może to wyjaśnić.
Używamy LOGGERA w całym naszym kodzie, co odpowiada naszej konwencji nazewnictwa (i nasz CheckStyle jest z niego zadowolony).
Posuwamy się nawet dalej, korzystając ze ścisłej konwencji nazewnictwa w Eclipse. Tworzymy nową klasę z szablonem kodu:
Rejestrator został skomentowany, ponieważ początkowo nie jest nam potrzebny. Ale jeśli będziemy go potrzebować później, po prostu odkomentujemy.
Następnie w kodzie używamy szablonów kodu, które oczekują obecności tego programu rejestrującego. Przykład z szablonem try-catch:
Mamy jeszcze kilka szablonów, które z niego korzystają.
Ścisłe konwencja pozwala nam być bardziej wydajne i spójne z szablonów kodu .
źródło
Osobiście uważam, że wielkie litery wyglądają na naprawdę duże. Co więcej, ponieważ jest to klasa, która nie jest bezpośrednio związana z zachowaniem klasy, nie widzę większego problemu w użyciu
logger
zamiastLOGGER
. Ale jeśli będziesz ściśle pedantyczny, użyjLOGGER
.źródło
Nie zapominaj, że PMD uszanuje komentarz
w tym. Spowoduje to, że PMD pominie linię z kontroli, umożliwi to wybór dowolnego stylu.
źródło
Zwykle stałe są pisane wielkimi literami.
Rejestratory nie powinny jednak być statyczne, ale sprawdzane dla każdej „nowej” klasy zawierającej, jeśli używa się fasady slf4j. Pozwala to uniknąć pewnych nieprzyjemnych problemów z modułami ładującymi w kontenerach internetowych, a ponadto umożliwia programowi rejestrującemu wykonywanie specjalnych czynności w zależności od kontekstu wywołania.
źródło
Wolę „logger”, czyli małe litery. Powodem nie jest to, że jest stała lub nie stała (zmienna lub niezmienna). Jeśli użyjemy tego rozumowania, będziemy musieli zmienić nazwę zmiennej, jeśli zmienimy strukturę rejestrowania (lub jeśli struktura zmieni zmienność programów rejestrujących).
Dla mnie ważniejsze są inne powody.
Program rejestrujący jest obiektem cienia w klasie i nie powinien być bardzo widoczny, ponieważ nie implementuje głównej logiki. Jeśli użyjemy „LOGGER”, przyciąga wzrok w kodzie, który przyciąga zbyt wiele uwagi.
Czasami rejestratory są deklarowane na poziomie instancji (tj. Nie jako statyczne), a nawet wstrzykiwane są jako zależność. Nie chciałbym zmieniać kodu, jeśli zdecyduję się zmienić sposób uzyskiwania programu rejestrującego. Wrt stabilność kodu. ta (hipotetyczna w wielu przypadkach) zmiana jest drugim powodem, dla którego wolę małe litery.
źródło
Jeśli twoje standardy kodowania - jeśli je masz - mówią, że powinny być pisane wielkimi literami, to tak.
Nie widzę żadnego wyraźnego powodu z takiego czy innego powodu. Myślę, że to całkowicie zależy od twoich osobistych upodobań. standardy kodowania twojej firmy.
BTW: Wolę „LOGGER” ;-)
źródło