2

我很少使用协议,所以我对正确使用它们还没有感觉。对我来说,它们看起来很像 Java 接口,其优点是类型和操作可以很好地分离。

除了解决表达问题,我将协议理解为一种以有意义的方式对功能进行分组的方式。

因此,如果我有一条记录和一组相关函数来操作该记录,我可以定义一个协议。但是,如果我没有参与该协议的任何其他数据类型,它会以某种方式感觉像是在滥用该模式。此外,这不是增加了不必要的复杂性吗?

关于这个问题是否有任何推理,或者至少有一些关于何时使用协议以及何时坚持使用普通旧功能的约定?

4

1 回答 1

4

我简短而固执的回答一定是否定的。

在我看来,如果您不打算让其他类型参与协议,那么使用协议带来的轻微不便是不值得的。当您重新加载定义协议的文件时,协议实例不会自动重新加载,这有点令人困惑。如果您打算让其他地方的代码参与协议,或者甚至有理由相信您可能会这样做,那么它们是值得的,尽管在您的情况下我不得不说不。

我的约定/经验法则:
坚持使用简单的旧函数,直到您认为可以发现表达式问题的开始,然后使用协议。

于 2013-05-02T23:15:30.443 回答