2010-09-16 34 views
26

Tôi đang đối mặt với một dòng cụ thể dài 153 ký tự. Bây giờ, tôi có xu hướng phá vỡ mọi thứ sau 120 ký tự (tất nhiên, điều này phụ thuộc rất nhiều vào nơi tôi và các công ước địa phương.) Nhưng thành thật mà nói, ở khắp mọi nơi tôi phá vỡ dòng chỉ làm cho nó trông xấu. Vì vậy, tôi đang tìm một số ý tưởng về những gì tôi nên làm cho nó.Bao bì dòng mã - cách xử lý các dòng dài

Đây là dòng:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

Tôi mở cửa cho tất cả những ý tưởng về cách/nơi để phá vỡ các dòng (và tại sao), cũng như cách để rút ngắn đường riêng của mình.

Chúng tôi không phải là cửa hàng Java và không có quy ước địa phương cho loại điều này, hoặc rõ ràng là tôi chỉ đơn giản theo dõi chúng.

Cảm ơn!

Trả lời

32

Nói chung, tôi phá vỡ dòng trước nhà khai thác, và thụt dòng tiếp theo:

Map<long parameterization> 
    = new HashMap<ditto>(); 

String longString = "some long text" 
        + " some more long text"; 

Đối với tôi, các nhà điều hành hàng đầu truyền đạt rõ ràng rằng "dòng này được tiếp tục từ cái gì khác, nó không tự đứng. " Những người khác, tất nhiên, có sở thích khác nhau.

+1

Và như một bình luận liên quan: nó sẽ không được tốt đẹp nếu Java đã typedef? – Anon

+1

Có, có thể. Tôi thậm chí sẽ giải quyết cho & macro – corsiKa

+4

Tôi đồng ý với việc giải lao trước khi người vận hành ngoại trừ toán tử gán, tôi thấy khó đọc hơn khi '=' của bạn nằm trên dòng thứ hai. Và ngay sau Java sẽ có toán tử Diamond :) –

6

IMHO này là cách tốt nhất để viết dòng của bạn:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

Bằng cách này, thụt đầu dòng tăng mà không niềng răng có thể giúp bạn để thấy rằng mã đã được chỉ tách ra vì dòng quá dài. Và thay vì 4 dấu cách, 8 dấu cách sẽ làm cho nó rõ ràng hơn.

+0

Một dòng có thể bắt đầu bằng toán tử nhưng không bao giờ kết thúc bằng toán tử, trong trường hợp này là '='. Kiểm tra tự động định dạng trong IDE của bạn. NetBeans sẽ thay đổi mã này để chắc chắn (được kiểm tra). – Hermes

+4

Cài đặt mặc định của một IDE không liên quan đến sở thích cá nhân hoặc đề xuất của nhà phát triển. Tôi hiểu rằng một số người thích sử dụng '=' ở đầu dòng, nhưng trong trường hợp khai báo thuộc tính lớp (sự thụt lề của dòng thứ hai sẽ làm cho nó rõ ràng hơn). –

+2

Chỉ cần rõ ràng, không có đúng và sai ở đây, nó hoàn toàn là thẩm mỹ và ý kiến ​​cá nhân. –

4

Sử dụng phương pháp nhà máy tĩnh của Guava cho Maps và chỉ dài 105 ký tự.

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = Maps.newHashMap(); 
+3

+1 Ý tưởng rất hay. Nếu bạn không muốn phụ thuộc bổ sung, nó rất dễ dàng để viết một nhà máy tĩnh như vậy của riêng bạn. – helpermethod

+41

Tôi không nghĩ rằng việc sử dụng thư viện để nhận các dòng ngắn hơn là một ý tưởng hay. – Carlos

+1

Tôi sẽ không khuyên bạn nên bao gồm nó cho mục đích đó, nhưng nhiều dự án đã sử dụng nó. Và như phương pháp trợ giúp chỉ ra, đó là một lớp lót giúp tiết kiệm một số nét chính. – whiskeysierra

6

Đây là cách tôi thực hiện và Google thực hiện theo cách của tôi.

  • Nghỉ trước biểu tượng cho không phân nhà khai thác.
  • Break sau biểu tượng cho = và cho ,.

Trong trường hợp của bạn, vì bạn đang sử dụng 120 ký tự, bạn có thể phá vỡ nó sau khi các nhà điều hành phân công dẫn đến

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

Trong Java, và đối với trường hợp đặc biệt này, tôi sẽ cung cấp cho hai tab (hoặc tám khoảng trống) sau giờ nghỉ, tùy thuộc vào việc các tab hoặc dấu cách được sử dụng cho thụt đầu dòng hay không.

Điều này tất nhiên là sở thích cá nhân và nếu dự án của bạn có quy ước riêng về gói hàng thì đó là những gì bạn nên làm theo cho dù bạn có thích hay không.

0

Tôi nghĩ rằng di chuyển toán tử cuối cùng đến đầu dòng tiếp theo là một thực hành tốt. Bằng cách đó bạn biết ngay mục đích của dòng thứ hai, ngay cả khi nó không bắt đầu với một toán tử. Tôi cũng khuyên bạn nên sử dụng 2 khoảng trống thụt đầu dòng (2 tab) cho một tab đã bị hỏng trước đó, để khác biệt với thụt đầu dòng thông thường.Đó là ngay lập tức có thể nhìn thấy như tiếp tục dòng trước đó. Do đó, tôi đề xuất điều này:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper 
      = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 
Các vấn đề liên quan