【问题标题】:Is it acceptable to wrap PHP library functions solely to change the names?仅包装 PHP 库函数以更改名称是否可以接受?
【发布时间】:2010-04-02 10:13:23
【问题描述】:

今年夏天我将启动一个相当大的 PHP 应用程序,我将是该应用程序的唯一开发人员(所以除了我自己的代码约定之外,我没有任何编码约定可以遵守)。

PHP 5.3 是一种体面的语言 IMO,尽管名称空间令牌很愚蠢。但一直困扰我的一件事是标准库及其缺乏命名约定。

所以我很好奇,将一些最常见的标准库函数包装在我自己的函数/类中以使名称更好一点是不是很糟糕?我想它也可以在某些情况下添加或修改某些功能,尽管目前我没有任何示例(我想我会找到方法让它们 OO 或在我工作时让它们的工作方式有所不同)。

如果您看到一个 PHP 开发人员这样做,您会认为“伙计,这是一个劣质的开发人员吗?”

此外,我对 PHP 是否优化/如何优化知之甚少(或任何事情),而且我知道通常 PHP 性能并不重要。但是做这样的事情会对我的应用程序的性能产生明显的影响吗?

【问题讨论】:

  • 很奇怪。我昨晚尝试发布此内容,但 Wi-Fi 出现故障,请求无法完成。所以我只是关闭了浏览器并上床睡觉。然后我起床并回答了我认为我从未问过的问题

标签: php standard-library


【解决方案1】:

您现在可能是唯一的开发人员,但其他人会收到此代码吗?如果是这样,如果您只是简单地包装调用,那么您真的应该主要坚持使用标准库名称。

我使用过作者封装了这样的调用的代码,它确实损害了快速理解代码的能力

如果您看到一个 PHP 开发人员这样做,您会认为“伙计,这是一个劣质的开发人员吗?”

好吧,不……但我想“该死……我必须学习这些家伙的新命名标准,尽管出于善意,但我会花时间”

【讨论】:

    【解决方案2】:

    我假设您不仅指的是命名约定,还指的是function (needle, haystack)function(haystack, needle) 参数顺序的组合。

    我完全可以理解为自卫而围绕这些建立理智包装的愿望。不过,我仍然宁愿不这样做,只是因为它为您的项目添加了一个专有层,这会使其他人更难理解。每个人都知道array_push 的作用,但MyArrayFunctions::push 可能需要查找,甚至查看以找出它的作用。

    我倾向于坚持这些标准,尽管在这种情况下它们确实很糟糕。此外,有了一个可以在您键入时查找函数和参数的不错的 IDE,问题已经大大减少了。

    另一方面,我真的看不出有什么害处,比如说,静态类 Array 将所有 push()pop()array_this()array_that() 整合到一个标准形式中。我会说这取决于你,真的。

    【讨论】:

    • @Gordon,你用这个新的 > 5 东西让我感到惊讶。我真的需要休息半天,去探索那里有什么。谢谢!
    • 不客气,虽然需要注意 ArrayObject 并没有提供所有常规的数组方法,但这是一个好的开始。
    【解决方案3】:

    简单的包装器不会影响您的性能,但这可能会使该项目的任何未来开发人员感到困惑。作为一名 PHP 程序员,您会慢慢开始期待奇怪的命名约定。

    如果您要添加任何功能,最好有一致的约定。我使用了一个 PHP 静态类,该类确实包装了本机数组函数(并添加了新函数)。始终使用相同的参数位置非常方便。

    【讨论】:

      【解决方案4】:

      在我看来,例如数组的 OOP 实现是可以的,您将包装它们并部分修改功能,但只是重命名函数和改组我不喜欢的参数。

      如果您确实需要这样做,请确保使用 phpdoc 对其进行注释,以便人们可以在其 IDE 的自动完成中看到正确的语法。

      【讨论】:

        猜你喜欢
        • 2020-06-08
        • 2012-07-03
        • 1970-01-01
        • 2018-10-12
        • 2016-08-28
        • 2019-06-28
        • 2019-04-20
        • 2020-12-09
        • 2014-07-30
        相关资源
        最近更新 更多