2012-11-14 24 views
5

Codenarc là một khung phân tích mã Groovy cho các lỗi, thực tiễn xấu, mâu thuẫn, các vấn đề về phong cách và hơn thế nữa.Các câu lệnh nhập tĩnh sẽ không bao giờ được nhập sau khi nhập không tĩnh

Có một lý do cho quy tắc này: MisorderedStaticImports Rule:

Kiểm tra cho báo cáo nhập khẩu tĩnh mà nên không bao giờ có sau khi nhập khẩu không tĩnh.

Ví dụ về vi phạm:

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

public class MyClass{} 

Tôi không hiểu động lực hoặc tác động đối với quy tắc này.

+5

Đó là quy ước duy nhất. Theo như Java là có liên quan, nó là không thích hợp. –

+2

Trình định dạng của IntelliJ đặt nhập khẩu tĩnh sau khi nhập khẩu bình thường theo mặc định. –

+1

@PeterLawrey Yeah Ý tưởng và nó có ý nghĩa!xem [ví dụ] (http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-depending-on-import-sequence-order) –

Trả lời

8

Như Marko Topolnik nói, thứ tự nhập khẩu không liên quan đến ý nghĩa của chương trình.

Tôi đã thử xem JLS cho một tuyên bố rõ ràng về hiệu ứng đó, nhưng tôi không thể tìm thấy. Và Hướng dẫn Java cũng không đề cập đến thứ tự nhập. Tuy nhiên, ngữ nghĩa của import là như vậy mà nó làm cho không có sự khác biệt. Nếu kết quả nhập khẩu trong bất kỳ sự mơ hồ tiềm năng nào do thứ tự nhập, thì JLS cho biết đó là lỗi biên dịch.

Do đó, đây chỉ là một quy ước kiểu cách. (Trên thực tế, nếu bạn nhìn vào các quy tắc, nó thậm chí còn cung cấp cho bạn tùy chọn đặt hàng nhập khẩu tĩnh đầu tiên!)


CẬP NHẬT

@Eugene Stepanenkov chỉ ra Q này & Một

Đó là một lỗi khó hiểu trong các phiên bản o f trình biên dịch Java Java trước Java 8. Nó được (cuối cùng) thừa nhận và cố định.

Tôi đoán, điều đó có nghĩa là lỗi có thể là một phần của động lực cho cảnh báo Codenarc. Tuy nhiên, đây là vấn đề: nếu bạn đang sử dụng một trình biên dịch Java bị ảnh hưởng bởi lỗi, thì mã với các hàng nhập khẩu theo thứ tự "sai" sẽ không biên dịch được ... kết xuất lệnh cảnh báo Codenarc.

+0

Nhìn vào [câu hỏi] (http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-depending-on-import-sequence-order) –

+0

Bắt tốt. Tôi chưa từng gặp cái đó trước đây. –

0

Sự cố kiểu. Sẽ chỉ có một, hai nhập khẩu tĩnh, nhưng có tác động lớn đến khả năng hiểu biết như giới thiệu tên hàm. Do đó đặt chúng ở đầu (để đọc) có thể được coi là phong cách tốt. IDE thu gọn "[+]" hỗ trợ có thể đã được xem xét quá.

Tôi nghĩ rằng họ muốn nhập khẩu tĩnh được tách biệt với các mục nhập khác.

0

Chọn thứ tự nhập (tĩnh và không tĩnh) có thể gây ra sự cố trong trường hợp cạnh như trong example.

Các vấn đề liên quan