冷凝代码的最佳实践?

时间:2010-12-16 18:26:21

标签: iphone objective-c cocoa-touch

如果您希望将方法中的代码(objective-c)压缩到单个调用(为了简洁或可读性),那么首选实践是什么。

  1. 不要这样做,请将所有相关代码保留在方法中。
  2. 向相关对象添加新方法,即 - (NSString *)formatedTime;
  3. C-Style函数,在相关对象之外定义。
  4. 其他即我错过的东西。

3 个答案:

答案 0 :(得分:2)

重写代码时的主要规则是始终确保我写的内容尽可能可读。考虑到这一点,我通常会:

  1. 只有当方法相对较短(适合一两个屏幕)并且在逻辑上相关时才保留方法中的所有代码
  2. 如果新方法的名称使其更具可读性,减少代码重复或使流程对读者更有意义,则添加新方法
  3. 避免使用C风格的函数,除非处理非常低级的东西,或者在其他C风格函数的上下文中;基本上保持你正在重写的代码的风格
  4. 最重要的是,尽量确保一旦重写的方法仍然有意义,做它应该做的事情(即没有引入错误),并且可以被另一个开发人员快速阅读和理解

答案 1 :(得分:2)

我要说的另一件事是,如果将代码分解为其他辅助方法,则应在类扩展中声明这些方法,而不是类的主标头。这是一个示例.m文件:

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

@implementation MyClass

//Implementation here

@end

答案 2 :(得分: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 / @ synthesize power,但只能从with-in类对象访问它。私人财产只能在self上访问。