我很少使用协议,所以我还没有完全正确使用它们的感觉。对我来说,它们看起来非常像Java接口,其优点是可以很好地分离类型和操作。
除了解决表达式问题,我理解协议是一种以有意义的方式对功能进行分组的方法。
因此,如果我有一个记录和一组相关的函数来操作该记录,我可以定义一个协议。但是,如果我没有任何其他数据类型参与该协议,它会感觉像是滥用该模式。此外,是不是增加了不必要的复杂性?
关于何时使用协议以及何时坚持使用普通旧功能,是否有任何关于该问题的理由或至少某些约定?
答案 0 :(得分:4)
我的简短而自以为是的答案必须是否定的。
在我的意见中,如果您不打算让其他类型的人参与协议,那么使用协议会带来轻微的不便。当您重新加载定义协议的文件时,协议实例不会自动重新加载,这会让人感到有些困惑。如果你打算在别处参与协议,或者甚至有理由相信你可能会这样做,那么它们是值得的,尽管在你的情况下我不得不说不。
我的惯例/经验法则:
坚持使用普通的旧函数,直到您认为可以发现表达式问题的开头,然后使用协议。