跨類使用同名命名方法(尤其是涉及繼承和/或協議的方法)是一種好的做法還是不好的做法?最佳實踐風格 - 包含代理和所有權的方法名稱
例如,我有某種形式的協議:
@protocol DataReceiver <NSObject>
- (void)handleNewData:(id)data;
@end
而且我擁有一些東西控制器類,如
@interface OwnerOfAllThings <DataReceiver>
//this child does NOT conform to DataReceiver
@property (nonatomic, strong) SomeOwnedModel myChild;
@end
但孩子是不透明的,所以我的-handleNewData:
的實現基本上只是一個傳遞並調用了一個負責實際處理的子方法。所以我的問題是,雖然它在功能上沒有太大差別,但在SomeOwnedModel
中放入一個名稱相同的方法是一個壞主意,因爲它可能會與協議中的聲明混淆?還是應該事實上完全一致,爲了一致?
即,這是更好的(假設SomeOwnedModel.h
聲明適當的方法):
@implementation OwnerOfAllThings
- (void)handleNewData:(id)data {
//Option 1:
[self.myChild handleNewData:data]; //OR...
//Option 2:
[self.myChild ownerReceivedNewData:data]; //or whatever else
}
@end
感謝您的注意。所有的好點。我不能讓'SomeOwnedModel'符合相同的協議,因爲協議中實際上有其他方法不適用於它 - 但是您怎麼看待創建某種協議 - 繼承樹來抽象掉共享方法?即'@protocol DataHandler',然後'@protocol DataReceiver '和'@protocol DataResponder '(或者更不明確但含義相同的東西) –
Quintana
當然。或者你可以有一個用於子事件的協議,一個用於父親特有的事件,然後讓父對象同時符合(比如'NSURLSession'),但是子只符合特定於兒童的協議。使用任何你認爲對你的情況最不明確的方法。 – Rob