2010-12-16 114 views
0

如果您想在某個方法中使用代碼(objective-c)來縮減爲單個調用(爲了簡潔或易讀),那麼首選方法是什麼?凝結代碼的最佳做法?

  1. 不這樣做,請保留方法中的所有相關代碼。
  2. 爲所討論的對象添加一個新方法,即 - (NSString *)formatedTime;
  3. C型功能,定義在有問題的對象之外。
  4. 其他即我錯過了。

回答

2

重寫代碼時,我的主要規則是始終確保我寫的內容儘可能可讀。考慮到這一點,那麼,我一般:

  1. 把所有的代碼的方法,只有當它是相對較短(在屏幕或兩個配合),並且所有的邏輯關係
  2. 添加如果新方法新方法的名稱將使其更具可讀性,減少代碼的重複,或使流程對讀者更有意義
  3. 避免使用C風格的函數,除非處理某些非常低級別的事情,或者在其他C風格的功能;基本上與你正在改寫的代碼的風格保持一致
  4. 最重要的是,儘量確保一次重寫的方法仍然有意義,做它應該做的事情(即沒有引入錯誤),並且可以快速讀取並被其他開發人員所理解
+0

謝謝蒂姆,很好的回答,在過去,我已經按照你的說法去做了,並且用明智的命名方法去清理了很容易被封裝的代碼段。我只是想確保我在最佳實踐和其他人的期望方面做了正確的事情。非常感激。 – fuzzygoat 2010-12-16 20:28:22

2

另一件我要說的是,如果您將代碼分解爲其他輔助方法,則應該在類擴展中聲明這些方法,而不是類的主標頭。下面是一個例子.m文件:

@interface MyClass() 
- (CGRect)makeRect; 
- (NSString*)formatStringFromInput:(NSString*)input; 
@end 

@implementation MyClass 

//Implementation here 

@end 
1

這類似於johnw188 hint,但去得遠一點:

在一類擴展你不僅可以擁有私有方法,但私有財產了。

@interface MyClass() 
@property(retain) MyOtherClass *aNotherObject; //declared in .h. Should be @private 
- (CGRect)makeRect; 
- (NSString*)formatStringFromInput:(NSString*)input; 
@end 

@implementation MyClass 
@synthesize aNotherObject; 

//Implementation here 

-(void)dealloc 
{ 
    self.aNotherObject = nil; 
    [super dealloc]; 
} 

@end 

好處很明顯:你得到了@ property/@合成的威力,但只能在類對象中使用它。私人財產只能通過self訪問。