【问题标题】:Is it possible to have too many functions in a PHP application?PHP 应用程序中是否可能有太多函数?
【发布时间】:2011-03-02 12:24:32
【问题描述】:

一个 PHP 应用程序可以有太多的功能吗?执行大量 PHP 函数会占用内存和资源吗?我正在开发的 WordPress 主题有很多功能(在我完成时可能超过 100 个),我担心我可能有太多功能。

【问题讨论】:

    标签: php function


    【解决方案1】:

    PHP 的核心是over 3000 functions,所以不用担心添加太多。

    【讨论】:

      【解决方案2】:

      不,它不能。实际上,拥有许多功能是件好事,因为这意味着您已将代码划分为更易于管理的部分。一个好的规则是保持你的函数很小,让它们只做一件事。哦,记得给你的函数命名,这样函数名才能很好地描述函数的作用。

      拥有很多方法会在执行时间上产生很小的开销,但与使用结构化代码所带来的好处相比,它是如此微不足道,所以我不会担心。

      【讨论】:

        【解决方案3】:

        我不会担心 100 个函数。那是很少的功能。

        全局函数和方法被编译,存储在内存中,并在哈希表中建立索引(除了最近实现的缓存查找)。随着函数数量的增加,调用函数时性能不会下降,因为平均而言,访问哈希表是在恒定时间内完成的。

        但是,解析脚本会产生更多开销,如果您实际调用所有这些函数,则需要编译它们。如果您使用操作码缓存,这不是真正的问题。也会有更多的内存开销,但通常情况下,内存在企业级 Web 服务器中不是问题,在这种情况下,尝试尽可能快地处理请求更合适,而不用过多关心内存。

        还有风格问题。如果您有太多全局函数,请考虑是否:

        • 您正在这些函数之间复制代码。考虑重构,将通用代码移至其他函数,并在适当的情况下通过添加参数来概括函数的行为。
        • 最好将对类中的相同数据进行操作的函数分组。

        最后,只有在分析应用程序并发现函数调用是 CPU 瓶颈而函数定义是内存瓶颈时,才需要担心这一点。

        【讨论】:

          【解决方案4】:

          我认为是的,一个项目可以有太多的功能。我不知道你是如何设置项目的,但听起来你有函数库。您可能希望在未来考虑面向对象的开发。这允许您将功能封装到对象中。因此,对象包含函数,并且它们对其他对象不可见(除非您希望它们可见)。这有助于大幅降低 API 污染。

          对于你的记忆问题 - 我以前也担心这个,不要。良好的编程实践比速度更重要。无论如何,您甚至都不会注意到 Web 服务器上的差异。总是更喜欢可维护性而不是速度!

          【讨论】:

            【解决方案5】:

            只需编写代码即可完成工作。不要关心你的函数数量。

            【讨论】:

              【解决方案6】:

              100 个函数无需担心。如果您的代码很慢,您应该对其进行分析以明确找到慢的部分。

              记住,过早的优化是邪恶的

              【讨论】:

              • Remember, premature optimizations are evil mmh.. 有点不同意 ;) 好的规划和设计本身就是总优化的一半
              • @Daniel 试图限制函数的数量,因为人们猜测它可能是一个性能问题,这与良好的规划完全不同。性能瓶颈并不总是很明显,有时会出现在非常意想不到的地方。
              • “过早的优化是万恶之源” - Donald Knuth。 “迟来的悲观是不好的叶子”——Len Lattanzi。
              • 完全同意Fabian的评论
              【解决方案7】:

              即使许多功能会导致更多内存消耗,我还是建议您使用它们。清晰的结构比性能重要得多

              throwing hardware at it 可以提高性能,结构糟糕的应用程序很快就会变得非常难以维护。

              顺便说一句:100 个函数什么都不是!

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-11-06
                • 2011-01-09
                • 2015-05-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多