2014-01-27 58 views
0

我最近做了一些功能,如下列之一:檢查是否創建了對象:很好的風格?

-(BOOL)registerSomethingWithParameter:(Parameter*) param 
{ 
    Something* some = nil; 

    if ([self checkParameter:param]) 
    { 
     some = [[Something alloc] myInitCallWithParameter:param]; 
    } 
    return (some ? YES : NO); 
} 

有大約在代碼中使用?多次討論。你怎麼看?這是否是一種正確的方式來告訴調用函數,沒有返回對象,一切正常?

我也想過:在Something-Definition中檢查myInitCallWithParameter:中的有效參數不是更好嗎,但大多數這些類都很小,只存儲少量值。因此,在輸入if時,會導致創建爲零的所有內容都會被檢查。

+1

這是一個很好的風格。 –

+0

不明白爲什麼要創建一個Something對象? – CW0007007

+1

一個常見的Cocoa替代方法是添加另一個類型爲「NSError **」的參數,如果出現錯誤,它將包含錯誤。但是,如果你看Apple許多方法,他們也會返回一個BOOL(例如' - (BOOL)setInputGain :(浮點數)增益錯誤:(NSError **)outError') –

回答

2

我不覺得使用中有任何問題嗎?而不是if/else。我看到很多程序員在使用它,我自己使用它。你的代碼風格很好。

0

爲什麼不只是做:

-(BOOL)registerSomethingWithParameter:(Parameter*) param 
{ 
    return [self checkParameter:param]; 
} 

我假設checkParamter返回一個布爾值。在這種情況下,你甚至不需要這個registerSomethingWithParameter函數,因爲它只是創建了一個本地變量,而不是在任何地方使用?除非你剛剛寫這個例子。 :-)

0

雖然你的方法是完全可行的,但更好的選擇可能是簡單地返回創建的對象本身;像這樣:

-(id)registerSomethingWithParameter:(Parameter*) param 
{ 
    Something* some = nil; 

    if ([self checkParameter:param]) { 
    some = [[Something alloc] myInitCallWithParameter:param]; 
    [self registerSomething:some]; 
    } 

    return some; 
} 
相關問題