Programming Language ကို ရေးတဲ့အခါမှာ တစ်ယောက်နဲ့ တစ်ယောက် ရေးသားတဲ့ style တွေ က မတူညီကြပါဘူး။ ဒါကြောင့် ရေးသားပုံ တူညီအောင် style guide တွေ ထုတ်ကြပါတယ်။ Company တော်တော်များများကလည်း style guide တွေ ထုတ်ပြီး ရုံးအတွင်း project ရဲ့ code တွေရဲ့ style တွေ တူညီအောင် ဖန်တီးကြပါတယ်။ Objective-C မှာလည်း style guide တွေ ရှိပါတယ်။ ကျွန်တော်ကတော့ The New York Time ရဲ့ iOS team က ထုတ်ထားတဲ့ style guide ကို လိုက်နာပါတယ်။
Properties တွေအတွက် dot-notation ကို အမြဲ အသုံးပြုပါ။ Instances အတွက် bracket notation ကို အသုံးပြုပါ။
ဥပမာ
view.backgroundColor = [UIColor orangeColor];
[UIApplication sharedApplication].delegate;
ဒီလို မသုံးပါနှင့်
[view setBackgroundColor:[UIColor orangeColor]];
UIApplication.shareAppliaction.delegate;
if
/ else
/switch
/while
) စသည်တို့ကို open အတွက် same line တွင် အသုံးပြုမည်ဖြစ်ပြီး close ကို new line မှာ အသုံးပြုမည်။ဥပမာ
if (user.isHappy) {
//Do something
}
else {
//Do something else
}
@synthesize
နှင့် @dynamic
စသည်တို့ကို လိုင်း အသစ်တွေ ရေးသားရမည်။Conditional ရဲ့ body ဟာ အမြဲတန်း အဖွင့် နှင့် အပိတ်ကို အသုံးပြုမည်။ အဖွင့် အပိတ် မပါခြင်း (လိုင်းတစ်ကြောင်း တည်းရေးခြင်း) ကို အသုံးမပြု။ တစ်ကြောင်းတည်း အသုံးပြုခြင်းသည် အန္တရာယ် ရှိသည်။ လက်ရှိ style guide တွင် လွယ်ကူစွာ ဖတ်ရှုနိုင်ရန် အဖွင့် နှင့် အပိတ်ကို မဖြစ်မနေ အသုံးပြုရမည်။
ဥပမာ
if (!error) {
return success;
}
ဒီလို မရေးပါ
if (!error)
return success;
ဒါမှမဟုတ်
if (!error) return success;
Ternary operator, ? , တို့ကို ရှင်းရှင်းလင်းလင်း ရေးသင့်သည်။ conditin တစ်ခု တည်း ကို သာ အသုံးပြုသင့်သည်။ multiple conditions များသည် နားလည်ရခက်ပြီး variable များ ရှုပ်ထွေးနိုင်သောကြောင့် ဖြစ်သည်။
ဥပမာ
result = a > b ? x : y;
ဒီလို မရေးပါ
result = a > b ? x = c > d ? c : d : y;
error variable ကို အသုံးမပြုပါ။ error ကို by reference ဖြင့် အသုံးပြုသည်။
ဥပမာ
NSError *error;
if (![self trySomethingWithError:&error]) {
// Handle Error
}
ဒီလို မဟုတ်ပါ။
NSError *error;
[self trySomethingWithError:&error];
if (error) {
// Handle Error
}
Method မာျးကို (-/+ symbol) ပြီးလျှင် space ခြားသည်။ method segment ကြားတွင်လည်း space ခြားသည်။
ဥပမာ
- (void)setExampleText:(NSString *)text image:(UIImage *)image;
Variable name တွေဟာ အတတ်နိုင်ဆုံး အဓိပ္ပာယ်ပြည့်ဝ အောင် ရေးသားဖို့လိုပါတယ်။ Single letter varialble name တွေကို for()
loop မှ လွဲ ၍ အသုံးမပြုပါ။
Asterisks ကို varialble ၏ ရှေ့တွင် ရေးသားပါသည်။ ဥပမာ NSString *text
ဒီလို အသုံးမပြုပါ NSString* text
ဒါမှမဟုတ် NSString * text
Property definitations တွေမှာ naked instance varialble ကို ဖြစ်နိုင်လျှင် အသုံးပြုပါ။
ဥပမာ
@interface NYTSection: NSObject
@property (nonatomic) NSString *headline;
@end
ဒီလို မဟုတ်ပါ။:
@interface NYTSection : NSObject {
NSString *headline;
}
Apple naming conventions ကို ဖြစ်နိုင်ရင် လေ့လာလိုက်နာသင့်သည်။ အထူးသဖြင့် memory management rules (NARC) နဲ့ ပတ်သက်တဲ့ အပိုင်းတွေကိုပေါ့။
ဥပမာ
UIButton *settingsButton;
ဒီလို မဟုတ်ပါ။
UIButton *setBut;
စာသုံးလို့ ကို ရှေ့မှာ ထားတဲ့ ပုံစံ ( ဥပမာ NYT
) ကို class name ,constant တွေရဲ့ ရှေ့မှာ အသုံးပြုပါ။ Core Data entity names မှာ တော့ အသုံးမပြုပါနဲ့။
ဥပမာ
static const NSTimeInterval NYTArticleViewControllerNavigationFadeAnimationDuration = 0.3;
ဒီလိုမရေးပါ။
static const NSTimeInterval fadetime = 1.7;
Properties တွေ အတွက် camel-case(စာလုံးကြီးအသေးအကြီး ပုံစံ) ကို အသုံးပြုပါမည်။ စတဲ့ စာလုံးကိုတော့ အသေးနဲ့ပဲစပါမယ်။ တကယ်လို့ Xcode က synthesize variable ကို အလိုအလျောက် generate လုပ်ပေးရင်တော့ ထားလိုက်ပါ။ မဟုတ်ခဲ့ရင်တော့ properties ကို camel-case အသုံးပြုပြီးတော့ synthesize အတွက် underscore စတာကို အသုံးပြုပါမယ်။
ဥပမာ
@synthesize descriptiveVariableName = _descriptiveVariableName;
ဒီလိုမရေးပါ။
id varnm;
Properties , instance variable ကို အသုံးပြုတဲ့ အခါမှာ self
ကို အသုံးပြုပါ။ local variables တွေရဲ့ နာမည်မှာ underscores မပါသင့်ပါဘူး။
နောက်လ တွင် ဆက်လက် ဖော်ပြသွားပါမည်။