2012-11-14 12 views
5

Codenarc to framework, który analizuje kod Groovy pod kątem wad, złych praktyk, niespójności, problemów z stylem i nie tylko.Statyczne instrukcje importu, które nigdy nie powinny być po niestatycznym imporcie

Czy istnieje powód dla tej reguły: MisorderedStaticImports Rule:

Sprawdza statycznych instrukcji przywozowych, które nigdy nie powinny być po importu nonstatic.

Przykłady łamania:

import my.something.* 
import static foo.bar.* 

public class MyClass{} 

nie rozumiem motywacji lub implikacje dla tej reguły.

+5

To tylko konwencja. Jeśli chodzi o Javę, nie ma to znaczenia. –

+2

Formater IntelliJ domyślnie umieszcza import statyczny po normalnych importach. –

+1

@PeterLawrey Yeah Idea ma i ma sens!spójrz na [przykład] (http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-dendingending-on-import-sequence-order) –

Odpowiedz

8

Jak mówi Marko Topolnik, kolejność importu nie ma znaczenia dla znaczenia programu.

Próbowałem spojrzeć na JLS, aby uzyskać wyraźne oświadczenie w tym zakresie, ale nie mogłem go znaleźć. Samouczek języka Java również nie wspomina o zamówieniu importu. Jednak semantyka import jest taka, że ​​nie ma znaczenia. Jeśli import spowoduje potencjalną niejednoznaczność ze względu na kolejność importu, JLS stwierdza, że ​​jest to błąd kompilacji.

Dlatego jest to tylko konwencja stylistyczna. (Rzeczywiście, jeśli spojrzeć na zasady, to nawet daje możliwość oddania importu statycznych pierwszy!)


UPDATE

@Eugene Stepanenkov wskazuje na to Q &

To było niejasne bug w wersjach o f Kompilator Oracle Java przed Java 8. Został (ostatecznie) potwierdzony i naprawiony.

Chyba oznacza to, że błąd mógł był częścią motywacji do ostrzeżenia Codenarc. Jednak jest jedna rzecz: jeśli używasz kompilatora Javy, którego dotyczy błąd, kod z importowaniem w "złej" kolejności nie skompilowałby się w ogóle ... renderując ostrzeżenie Codenarc.

+0

Zobacz [pytanie] (http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-dendingending-on-import-sequence-order) –

+0

Dobry połów. Nigdy wcześniej nie spotkałem się z tym. –

0

Problem w stylu. Będzie tylko jeden, dwa statyczne importy, ale które mają ogromny wpływ na zrozumiałość, jak wprowadzanie nazw funkcji. Dlatego umieszczenie ich na górze (do czytania) może być uznane za dobry styl. Wsparcie dla zwinnego IDE "[+]" również mogło zostać wzięte pod uwagę.

Myślę, że chcieli, aby statyczny import został oddzielony od pozostałych.

0

Wybór kolejności importu (statyczny i niestatyczny) może spowodować problem w takim przypadku krawędzi, jak w przypadku example.

Powiązane problemy