2013-05-02 39 views
2

我很少使用協議,所以我還沒有很好的使用它們的感覺。對我來說,他們看起來非常像Java接口,其優點是類型和操作很好地分離。當polymorphy不是(還)時,我應該使用協議嗎?

除了解決表達問題之外,我理解協議是一種以有意義的方式對功能進行分組的方法。

因此,如果我有一條記錄和一組相關函數來操作該記錄,我可以定義一個協議。但是,如果我沒有任何其他數據類型參與該協議,它會以某種方式感覺像濫用該模式。另外,它不是增加了不必要的複雜性嗎?

是否有任何推理關於這個問題,或者至少是關於何時使用協議以及何時堅持使用普通舊功能的一些約定?

回答

4

我的簡短和自以爲是的答案將不得不是。

在我的意見,如果你不會有其他類型的參與協議那麼它不值得使用協議的小麻煩。 重新加載定義有點令人困惑的協議的文件時,協議實例不會自動重新加載。如果你要在其他地方的代碼參與協議,或者有理由相信你可以這樣做,他們是值得的,但在你的情況下,我不得不說。

我的約定/經驗法則:
堅持普通的舊功能,直到你認爲你可以發現表達式問題的開始,然後使用協議。

相關問題