我看到世界正在朝着使代码尽可能具有表现力的方向发展。有些语言甚至可以让您轻松定义自己的 DSL。但是,我不确定如何将其引入 PHP 或纯 Java 等语言或大多数其他语言(我看到在 Ruby 和 Python 中都在某种程度上做到了这一点)。
想象一下,我有一个 Person 实体。我想要一个告诉我用户是否至少在$days
以前注册过的功能。现在,两个问题:
- 我应该把这个功能放在实体本身上吗?据我所知,实体是 DAO,它们的作用只是提供对底层数据库的低级访问。但是,
$person->hasSignedUpAtLeast(7)
似乎比PersonService::hasSignedUpAtLeast(7)
. - 如何使参数更清晰,而用户不必查看他/她的 IDE 并查看参数名称?您可能已经注意到,您不知道是什么
7
意思。是7天的意思吗?几个月?年?在 Ruby 中,我可以说person.hasSignedUpAtLeast(7.days.ago)
,但我在 PHP 中没有这样的奢侈。
请注意,我正在寻找基于在高质量应用程序中使用的经过验证的最佳实践的答案,而不是意见或讨论。我相信必须有一种方法来处理此类问题,其中函数名称必须始终是动词,但程序员需要在函数名称中传达参数的单位(例如米、天等) .