个人愿景和经验
我个人并不反对不同类型之间的比较。我什至鼓励它,因为它可以提高代码的可读性;让你正在做的事情看起来更合乎逻辑。除了基本的数字类型,也许是字符串和字符之外,我发现很难给你一个逻辑的类型内比较,而且我不记得遇到过很多。不过,我遇到了很多这样使用的算术运算符。
如何使用它们
你应该小心你正在做的事情,它们很少被使用是有原因的。如果你提供一个比较两种不同类型的函数,结果应该是合乎逻辑的,并且是用户直观的预期。为它编写好的文档也是可取的。Mark Ransom 已经说过了,但是如果用户可以在两个方向上进行比较,那就很好了。如果您认为使用运算符的比较不够清晰,则应考虑使用命名函数。如果您的运算符可以具有多种含义,这也是一个非常好的解决方案。
会出什么问题
您无法完全控制用户将如何处理您所写的内容。tletnes 给出了一个很好的例子,比较两个整数,但结果没有意义。与此相反,两种不同类型的比较可能是非常正确的。浮点数和整数都代表秒,可以很好地进行比较。
算术运算符
在逻辑旁边,我想展示一个带有算术运算符的内部类型示例。在谈论类型内使用时,算术运算符很像逻辑运算符。
假设您有一个运算符 + 用于二维向量和一个正方形。这是做什么的?用户可能认为它会缩放正方形,但另一个用户确信它会平移!这类问题可能会让您的用户感到非常沮丧。你可以通过提供好的文档来解决这个问题,但我个人更喜欢的是专门命名的函数,比如 Translate。
结论
类型内逻辑运算符可能很有用并且可以生成干净的代码,但是错误的使用会使一切变得更加复杂。