2010-06-09 60 views
21

Như tôi đã viết một switch trong Eclipse, tôi lại một lần nữa đi qua một thay lạ (với tôi, ít nhất) thụt đầu dòng mặc định, được áp dụng cho báo cáo 'chuyển đổi':Cách ưa thích để thụt lề các trường hợp trong một công tắc là gì?

switch (i) { 
case 1: 
    ... 
case n: 
    ... 
} 

Tôi có xu hướng thích khác cách:

switch (i) { 
    case 1: 
     ... 
    case n: 
     ... 
} 

Cách nào dễ đọc hơn và dễ chịu hơn cho bạn? Tôi vẫn chưa trăm phần trăm xác định điều gì là tốt nhất cho tôi, vì vậy tôi muốn gắn bó với những điều tốt nhất cho những người khác sẽ đọc mã của tôi.

BTW, bạn được tự do đóng câu hỏi này nếu điều này quá chủ quan. :)

+0

My Eclipse bằng cách indents mặc định nó theo cách như 2. Có lẽ một sự thiếu sót trong trình định dạng mã của Eclipse của bạn? – BalusC

+0

Visual Studio cũng theo định dạng mặc định theo cách thứ hai. – Naveen

+2

@BalusC: Chỉ các định dạng trình định dạng "Eclipse 2.1 [built-in]" mới có thêm thụt đầu dòng. Cả "Eclipse [built-in]" và "Java Convention [built-in]" đều không sử dụng thụt đầu dòng cho câu lệnh case (chỉ cần kiểm tra điều này trên Eclipse 3.5). –

Trả lời

0

tôi sử dụng cách thứ hai:

switch (i) { 
    case 1: 
     ... 
    case n: 
     ... 
} 
15

tôi thích cách thứ hai là tốt. Nhưng điều quan trọng là giữ nhất quán trong một ứng dụng cụ thể và/hoặc trong một nhóm cụ thể hơn là để thụt lề theo cách này hay cách khác.

8

Tôi có xu hướng thụt tất cả các cơ quan cấu trúc điều khiển một (4space) đơn tab như vậy:

switch (i) 
{ 
    case 1: 
     ... 
    case n: 
     ... 
} 

tôi xem xét việc chuyển đổi được cơ cấu kiểm soát bên ngoài và các trường hợp chỉ một phần của cơ thể (mặc dù họ là một phần của cấu trúc điều khiển).

tôi sẽ sau đó tiếp tục tab thụt lề mỗi trường hợp như vậy:

switch (i) 
{ 
    case 1: 
     do_something(); 
    case n: 
     do_something_else(); 
} 

Tôi thấy đây là định dạng dễ đọc nhất đối với trường hợp chuyển đổi cấu trúc.

Như jkohlhepp đã đề cập đến sự phù hợp với quy ước kiểu mã của dự án bạn đang làm là điều quan trọng nhất, nếu bạn đang làm việc trên một dự án không có, nó là giá trị phát triển một số.

+1

+1 Tôi cũng đặt dấu ngoặc mở trên một dòng mới – onedaywhen

+4

uggg, khung mở của một khối nên đi trên cùng một dòng như định nghĩa khối – Jay

+0

-1 kể từ khi bạn đặt cú đúp mở trên một dòng mới (tôi rõ ràng là không downvoting câu trả lời của bạn cho thực, nhưng tôi thực sự ghét điều đó), nhưng +1 ( – SlackOverflow

0

Phương pháp đầu tiên có ý nghĩa logic (đối với tôi), tuy nhiên tôi cũng thích phương pháp thứ hai. Tôi nghĩ rằng hầu hết chúng ta đều có điều kiện để mong đợi rằng mã bên trong niềng răng sẽ được thụt vào.

7

Theo số "official" Java Code Conventions, đó là biến thể đầu tiên (không có thụt lề bổ sung cho trường hợp).

+0

Tốt rằng các quy ước của Oracle (hoặc thực sự, của Sun) vẫn được lưu trữ, nhưng thông tin được cập nhật lần cuối vào năm 1999, vì vậy không hợp lệ cho bây giờ. [Java Style Guide] (https) : //google.github.io/styleguide/javaguide.html#s4.8.4-switch) khuyên bạn nên thụt lề nội dung chặn, mặc dù – asgs

1

Đầu tiên là trường hợp thụt đầu dòng chuyển đổi tiêu chuẩn.

switch (i) { 

case 1: 
    .... // Here you can write more code in a row than using the second way 
    break; 
case n: 
    .... 
    break; 
default: 
    .... 
    break; 
} 

Thông báo dòng chèn mới giữa switch (i) và trường hợp 1:

1

Nếu bạn thích trường hợp thứ hai, sau đó cho phù hợp bạn cũng nên thụt các else phần của một câu lệnh if:

if(test) 
    do_something(); 
    else 
     do_something_else(); 

Hầu hết mọi người không làm điều này, và quy ước là giữ cho các nhánh trên cùng một cấp như tuyên bố, do đó, Java ưu tiên đầu tiên như kiểm tra và mã chi nhánh của trường hợp nhất quán ở cấp cao hơn if/then/else build t.

Tôi đã lật thất bại giữa họ là tốt, nhưng cuối cùng đã kết thúc thích là người đầu tiên:

switch (i) { 
case 1: 
    ... 
case n: 
    ... 
} 
+0

xin lỗi, nhưng tại sao 'else' lại bị thụt lề thêm? mức ame là 'if', trong khi' case' nằm trong 'switch'. [Hướng dẫn kiểu Java] của Google (https://google.github.io/styleguide/javaguide.html#s4.8.4-switch) đã trở thành tiêu chuẩn khá nhiều trong những ngày này, khuyên bạn nên thụt lề nội dung của khối Chuyển đổi. – asgs

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