2010-10-01 85 views
27

Tôi đã tự dạy mình Mục tiêu-C trong khoảng 6 tháng và thích sử dụng ngôn ngữ rất nhiều. Tuy nhiên tôi đã không tìm thấy bất kỳ tiêu chuẩn mã hóa tốt, vì vậy mã tôi viết luôn luôn kết thúc lên trông giống như một mớ hỗn độn không phù hợp.Tiêu chuẩn mã hóa mục tiêu-C?

Những điều như quy ước đặt tên chỉ được thực hiện tốt, nhưng khoảng cách, thụt đầu dòng và chiều rộng dòng (không thể?) 80 không hoạt động tốt như vậy.

Bạn sử dụng quy ước nào với Objective-C?

Dưới đây là một ví dụ nhỏ của một cái gì đó không hoạt động:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 

     self.navigationItem.leftBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                 target:self.parentViewController 
                 action:@selector(done:)] autorelease]; 

     NSString* units = [[NSString alloc] initWithFormat:@"%@", @"oz"]; 
     NSString* optionOne = [[NSString alloc] initWithFormat:@"[%d%@] Calculate", 100, units]; 

     self.options = [[NSMutableArray alloc] initWithObjects: 
         optionOne, 
         @"Configure Portions", 
         @"Configure Notifications", 
         @"Help", 
         nil]; 

     [units release]; 
     [optionOne release]; 
     [tableView reloadData]; 
    } 
    return self; 
} 
+0

https: // github.com/raywenderlich/target-c-style-guide # ngôn ngữ – thesummersign

Trả lời

7

Câu hỏi hay, cảm ơn vì đã hỏi nó.

Một vài trong số các tiêu chuẩn mã hóa cá nhân của tôi:

  1. Tôi không dính đến 80 ký tự, nhưng tôi cố gắng duy trì dưới 120 hoặc lâu hơn. Obj-C là một ngôn ngữ dài dòng với các đối số "có tên", và Cocoa là một khuôn khổ thậm chí còn tốt hơn. Tôi hiếm khi cần chỉnh sửa mã trên VT220.
  2. Tôi thường không chia các cuộc gọi phương thức dài với ":" xếp hàng theo chiều dọc như Xcode muốn bạn thực hiện. Tôi ủng hộ truyền thống thẳng về phía trước, với các dòng bọc khi cần thiết, thụt vào bằng một điểm dừng tab.
  3. Trường hợp điều này trở nên thực sự khó sử dụng, tôi phá vỡ việc tạo và sử dụng các đối tượng trên nhiều dòng. Ví dụ. ở trên, tôi có thể tạo mảng tùy chọn trên một dòng, và thực hiện [self setOptions:...] ở bước tiếp theo. Điều này làm cho gỡ lỗi anyways đơn giản hơn.
  4. Tôi không sử dụng ký hiệu chấm để truy cập thuộc tính, vì tôi thấy nó ẩn hoạt động. Tôi sử dụng ký hiệu [object property] truyền thống.
  5. Tôi chưa bao giờ giải quyết thỏa đáng cách đặt tên của ivars so với người dân địa phương. Xcode tô màu chúng khác nhau, thường là tất cả những gì tôi cần, nhưng anh chàng MSFT sâu bên trong tôi vẫn nghĩ tiền tố phạm vi thể hiện là hữu ích, ví dụ: m_ hoặc ít nhất _. Nhưng tôi thường không, bởi vì nó rất xấu để nhìn vào. Và lòng tốt biết chúng ta là người của Apple ghét những thứ xấu xí. :)

(Đối với những gì nó có giá trị, trong ví dụ của bạn ở trên, bạn có thể nhận được một chuỗi autoreleased trực tiếp bằng cách sử dụng -[NSString stringWithFormat:...] thay vì alloc/init/release.)

+3

+1. Tôi thực hiện theo nhiều hướng dẫn tương tự, và tôi cũng không thích [ký hiệu cây thông Đông Ba Lan] (http://www.kuro5hin.org/story/2004/6/1/43942/41236). – dreamlax

+1

@dreamlax: +1 cho tên ký hiệu đó. –

+0

Ngoài những gợi ý tuyệt vời này, tôi cũng sử dụng bất kỳ sự chú ý nào tôi nhận được khi tôi cho phép Xcode thụt lại toàn bộ tệp. Hướng dẫn sử dụng indention là một sự lãng phí thời gian và, may mắn thay, Xcode hiện một công việc chủ yếu là khá. – bbum

1

Đây là một nguồn tốt: (tôi mới vì vậy nó sẽ không cho phép tôi gửi hai liên kết trong câu trả lời giống nhau) http://cocoadevcentral.com/articles/000082.php (Cocoa Style cho Obj C part 1 of 2)

phần 2 là cùng một liên kết nhưng kết thúc bằng 000083.php

2

Đây có lẽ là ý kiến ​​bất đồng xung quanh ở đây nhưng ... Tôi không thụt lề một dòng nào cả, tôi bật từ bọc. Ưu điểm của việc này là bạn có thể thu nhỏ/kéo dài cửa sổ và mã luôn trông đẹp, cộng với bạn không phải lãng phí bất kỳ thời gian nào rối tung với các dòng mới và tab/dấu cách để làm cho mã của bạn trông được chấp nhận.

+0

Đây chính xác là những gì tôi làm. –

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