为什么不命名空间自定义类/实例方法?

时间:2014-05-04 03:53:07

标签: objective-c ruby methods method-overriding

在Objectice-C或Ruby中,为什么我们不在前缀(使用我们的类前缀)我们的自定义类的类/实例方法来防止冲突,例如,如果Objective-C或Ruby稍后添加了一个具有相同名称的方法去超级班?

推理:

Objective-C良好做法是为您创建的类别添加前缀(使用您的类前缀)方法,以便将方法添加到您不拥有的类中。

例如:

@interface NSString (XYZAdditions)

+ (NSString)xyz_emptyString
{
    return @"";
}

- (NSArray)xyz_words
{
    // Split the string into words.
}

@end

1 个答案:

答案 0 :(得分:2)

我宁愿我的代码具有可预测的,非warted的方法名称,而不是理论上的防弹,以防止未来可能永远不会发生的未知变化。感觉有点像YAGNI情况。

Rails 转储标准库,如果它们似乎可以毫不费力地将其拉下来,那么我所做的任何事情都会比较苍白,我不妨为我理想的方法名称和在问题发生时立即解决问题。

我只做了一点Objective-C,但是唯一的"命名空间"我已经看到将你的XYZClass前缀添加到类名的开头,因为这是一个真正的问题,因为类名更容易发生碰撞。