Objective-C Style Guide

New York Time ရဲ့ Objective-C Style Gudie
ရေးသားသူ : saturngod

Programming Language ကို ရေးတဲ့အခါမှာ တစ်ယောက်နဲ့ တစ်ယောက် ရေးသားတဲ့ style တွေ က မတူညီကြပါဘူး။ ဒါကြောင့် ရေးသားပုံ တူညီအောင် style guide တွေ ထုတ်ကြပါတယ်။ Company တော်တော်များများကလည်း style guide တွေ ထုတ်ပြီး ရုံးအတွင်း project ရဲ့ code တွေရဲ့ style တွေ တူညီအောင် ဖန်တီးကြပါတယ်။ Objective-C မှာလည်း style guide တွေ ရှိပါတယ်။ ကျွန်တော်ကတော့ The New York Time ရဲ့ iOS team က ထုတ်ထားတဲ့ style guide ကို လိုက်နာပါတယ်။

Dot-Notation Syntax

Properties တွေအတွက် dot-notation ကို အမြဲ အသုံးပြုပါ။ Instances အတွက် bracket notation ကို အသုံးပြုပါ။

ဥပမာ

view.backgroundColor = [UIColor orangeColor];
[UIApplication sharedApplication].delegate;

ဒီလို မသုံးပါနှင့်

[view setBackgroundColor:[UIColor orangeColor]];
UIApplication.shareAppliaction.delegate;

Spacing

ဥပမာ

if (user.isHappy) {
//Do something
}
else {
//Do something else
}

Conditionals

Conditional ရဲ့ body ဟာ အမြဲတန်း အဖွင့် နှင့် အပိတ်ကို အသုံးပြုမည်။ အဖွင့် အပိတ် မပါခြင်း (လိုင်းတစ်ကြောင်း တည်းရေးခြင်း) ကို အသုံးမပြု။ တစ်ကြောင်းတည်း အသုံးပြုခြင်းသည် အန္တရာယ် ရှိသည်။ လက်ရှိ style guide တွင် လွယ်ကူစွာ ဖတ်ရှုနိုင်ရန် အဖွင့် နှင့် အပိတ်ကို မဖြစ်မနေ အသုံးပြုရမည်။

ဥပမာ

if (!error) {
return success;
}

ဒီလို မရေးပါ

if (!error)
return success;

ဒါမှမဟုတ်

if (!error) return success;

Ternary Operator

Ternary operator, ? , တို့ကို ရှင်းရှင်းလင်းလင်း ရေးသင့်သည်။ conditin တစ်ခု တည်း ကို သာ အသုံးပြုသင့်သည်။ multiple conditions များသည် နားလည်ရခက်ပြီး variable များ ရှုပ်ထွေးနိုင်သောကြောင့် ဖြစ်သည်။

ဥပမာ

result = a > b ? x : y;

ဒီလို မရေးပါ

result = a > b ? x = c > d ? c : d : y;

Error handling

error variable ကို အသုံးမပြုပါ။ error ကို by reference ဖြင့် အသုံးပြုသည်။

ဥပမာ

NSError *error;
if (![self trySomethingWithError:&error]) {
// Handle Error
}

ဒီလို မဟုတ်ပါ။

NSError *error;
[self trySomethingWithError:&error];
if (error) {
// Handle Error
}

Method

Method မာျးကို (-/+ symbol) ပြီးလျှင် space ခြားသည်။ method segment ကြားတွင်လည်း space ခြားသည်။

ဥပမာ

- (void)setExampleText:(NSString *)text image:(UIImage *)image;

Variable

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;
}

Naming

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;

Underscores

Properties , instance variable ကို အသုံးပြုတဲ့ အခါမှာ self ကို အသုံးပြုပါ။ local variables တွေရဲ့ နာမည်မှာ underscores မပါသင့်ပါဘူး။

နောက်လ တွင် ဆက်လက် ဖော်ပြသွားပါမည်။