2009-05-21 20 views
5

Bản sao có thể xảy ra:
Formatting of if Statements
Is there a best coding style for identations (same line, next line)?
Best way to code stackoverflow style 'questions'/'tags' rollover buttonsVị trí khung có ảnh hưởng đến khả năng đọc không?

public void Method { 

} 

hoặc

public void Method 
{ 

} 

Bên cạnh sở thích cá nhân là có bất kỳ lợi ích của một phong cách khác? Tôi đã từng thề bởi phương pháp thứ hai mặc dù bây giờ sử dụng phong cách đầu tiên cho công việc và các dự án cá nhân.

Bằng khả năng đọc ý tôi là tưởng tượng mã trong các phương pháp đó - if/else vv ...

+0

Đã được thảo luận ad-nauseam trong http://stackoverflow.com/questions/159366/is-there-a-best-coding-style-for-identations-same-line-next-line – Kena

+4

Tại sao không hỏi câu hỏi liên quan về việc liệu vi hoặc emacs có tốt hơn cho lập trình không? – Kevin

+0

Và http://stackoverflow.com/questions/249432/whats-the-reasoning-behind-the-different-brace-forms – Kena

Trả lời

5

Tôi nghĩ nó hoàn toàn chủ quan, tuy nhiên, tôi nghĩ điều quan trọng là thiết lập các tiêu chuẩn mã cho nhóm của bạn và mọi người đều sử dụng cùng một kiểu. Điều đó đang được nói tôi thích cái thứ hai (và đã làm cho nhóm của tôi sử dụng nó) bởi vì nó có vẻ dễ đọc hơn khi nó không phải là mã của bạn.

1

dòng bạn đếm mã sẽ được đáng kể ít hơn với tùy chọn đầu tiên. :)

+0

Vì vậy, nếu hiệu suất của bạn được đo lường bởi số lượng dòng mỗi ngày bạn sản xuất ... –

3

Đầu tiên là nhỏ hơn về số dòng (có lẽ đó là lý do tại sao sự phát triển -Java- sách xu hướng sử dụng cú pháp đó)

một Thứ hai là, IMHO dễ đọc hơn khi bạn luôn có hai việc sắp xếp dấu ngoặc đơn.

Dù sao cả hai đều được sử dụng rộng rãi, đó là vấn đề sở thích cá nhân của bạn.

5

Trong những ngày cũ, chúng tôi thường sử dụng kiểu đầu tiên (kiểu K & R) vì màn hình nhỏ hơn và mã thường được in trên giấy này gọi là giấy.

Những ngày này, chúng tôi có màn hình lớn và phương pháp thứ hai (kiểu ANSI) giúp bạn dễ dàng biết liệu các dấu ngoặc của bạn có phù hợp không.

Xem HEREHERE để biết thêm thông tin.

1

Tôi sử dụng câu lệnh if làm lý do gì đó trong chủ đề cảm xúc cao này.

if (cond) { 
    //code 
} 

bằng cách chỉ hỏi câu lệnh khác trông như thế nào? Phần mở rộng hợp lý của phần trên là: -

if (cond) { 
    //code 
} else { 
    //more code 
} 

Điều đó có thể đọc được không? Tôi không nghĩ như vậy và nó chỉ đơn giản xấu xí quá.

Nhiều dòng khác! = Ít có thể đọc được. Do đó tôi muốn đi với tùy chọn thứ hai của bạn.

+0

Mã Perl có xu hướng là "if (cond) {\ n \ t ... \ n} \ n else {\ n \ t ... \ n}", điều mà tôi thấy là sự cân bằng tốt giữa súc tích và đông đúc . – ephemient

7

Google C++ Style Guide gợi ý

loại lợi nhuận trên cùng một dòng như tên hàm, các thông số trên cùng một dòng nếu họ phù hợp.

Chức năng giống như thế này:

ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) { 
    DoSomething(); 
    ... 
} 

WebKit Coding Style Guidelines gợi ý

định nghĩa Chức năng: nơi mỗi cú đúp trên một dòng riêng.

Bên phải:

int main() 
{ 
    ... 
} 

sai:

int main() { 
    ... 
} 

Họ đề nghị niềng răng-on-cùng-đường cho mọi thứ khác, mặc dù.


GNU Coding Standards gợi ý

Điều quan trọng là đặt mở ngoặc rằng khởi động cơ thể của một hàm C trong một cột, do đó họ sẽ bắt đầu một defun. Một số công cụ tìm kiếm các dấu ngoặc mở trong cột một để tìm sự khởi đầu của các hàm C. Những công cụ này sẽ không hoạt động trên mã không được định dạng theo cách đó.

Tránh đặt dấu ngoặc ôm mở, dấu ngoặc đơn mở hoặc dấu ngoặc mở trong cột thứ nhất khi chúng ở trong một hàm, để chúng không bị lỗi. Dấu ngoặc mở bắt đầu một cấu trúc struct có thể đi vào cột một nếu bạn thấy nó hữu ích để xử lý định nghĩa đó như là một defun.

Điều cũng quan trọng đối với định nghĩa hàm để bắt đầu tên hàm trong cột một. Điều này giúp mọi người tìm kiếm các định nghĩa chức năng và cũng có thể giúp một số công cụ nhận ra chúng. Vì vậy, sử dụng cú pháp chuẩn C, định dạng là:

static char * 
concat (char *s1, char *s2) 
{ 
    ... 
} 

hoặc, nếu bạn muốn sử dụng cú pháp C truyền thống, định dạng độ nét như thế này:

static char * 
concat (s1, s2)  /* Name starts in column one here */ 
    char *s1, *s2; 
{      /* Open brace in column one here */ 
    ... 
} 

Như bạn có thể thấy, mọi người đều có ý kiến ​​riêng của họ. Cá nhân, tôi thích các dấu ngoặc Perl-ish-on-same-line-ngoại trừ-cho-else, nhưng miễn là tất cả mọi người làm việc trên các mã có thể hợp tác, nó thực sự không quan trọng.

1

Cá nhân tôi tìm thấy chữ cái thứ hai dễ đọc hơn (các quăn thẳng hàng).

Luôn luôn dễ dàng nhất cho một nhóm đi cùng với mặc định và kể từ khi Visual Studio và tôi đồng ý về điều này, đó là lý lẽ của tôi. ;-)

+0

Để chính xác hơn, VS __defaults__ đồng ý với bạn nhưng chúng có thể được điều chỉnh theo sở thích. Có gì lạ một chút là cấu hình định dạng mặc định cho VS thường khác với định dạng được sử dụng trong các mẫu. – AnthonyWJones

+0

@AntonyWJones Vâng, chúng tôi đồng ý với các giá trị mặc định ... ;-) Và, vâng TẠI SAO KHÔNG CHỨNG NHẬN THEO MẪU THEO D DI NGHIÊN CỨU !!! –

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