【发布时间】:2009-12-28 02:36:22
【问题描述】:
我正在创建一个 PHP 文件,它执行 2 次 mysql 数据库调用,脚本的其余部分是用于 file_exists 和其他简单变量之类的 if 语句。到目前为止,我在这个文件中有大约 2000 行代码。
如果陈述为真,是否最好包含一个单独的文件?还是直接在 if 语句中直接输入代码?
PHP 应该遵守的单个文件的最大代码行数是多少?
【问题讨论】:
标签: php include lines-of-code
我正在创建一个 PHP 文件,它执行 2 次 mysql 数据库调用,脚本的其余部分是用于 file_exists 和其他简单变量之类的 if 语句。到目前为止,我在这个文件中有大约 2000 行代码。
如果陈述为真,是否最好包含一个单独的文件?还是直接在 if 语句中直接输入代码?
PHP 应该遵守的单个文件的最大代码行数是多少?
【问题讨论】:
标签: php include lines-of-code
我想说不应该有任何与您的 php 文件中的行数有关的性能问题,它可以根据您的需要而定。
现在,对于模式和最佳实践,我想说你必须自己判断,我看到了许多组织良好的数千行文件和许多实际上很小且难以阅读的文件。 我的建议是:
【讨论】:
从计算机的角度来看,单个文件中的 2000 行代码并不是很糟糕,但在大多数情况下可能是可以避免的,请查看MVC design pattern,它将帮助您更好地组织代码。
另外,请记住,包含(大量)文件会减慢代码的执行速度。
【讨论】:
您可能想阅读像Clean Code by Bob Martin 这样的书。以下是该书中的一些要点:
使用 PHP,如果您不使用 Class 方法;你会遇到重复问题。帮自己一个忙,做一些关于这个主题的阅读;它将为您节省更多的扩展和维护时间。
【讨论】:
行数并不是性能的良好指标。确保您的代码组织高效,分为逻辑类或块,并且不要将不相关的代码组合成单个模块。
像 PHP 这样的语言的一个问题是,除非有一些创造性的缓存,否则每次请求托管页面时,每个包含文件的每一行都必须进行标记、压缩通过解析树并变成有意义的指令。 .NET 和 Java 等编译平台不会受到这种性能杀手的影响。
此外,由于其他发帖人之一提到 MVC 作为一种保持文件简短的方法:良好的代码组织是经验和常识的函数,与任何特定的模式或架构无关。 MVC 很有趣,但不是解决这个问题的方法。
【讨论】:
您需要关注行数吗?不,不一定。只需确保您的代码有条理、高效且没有不必要的冗长。
【讨论】:
这真的没关系,只要您正确记录了您的代码,尽可能地模块化,并检查了任何低效率。您可能有一个 10,000 行的文件。虽然我通常将应用程序的每个部分分成 500-1000 左右。
【讨论】:
2k 行对我来说听起来太多了......虽然这取决于你所遵循的代码风格,例如许多换行符、许多小函数或良好的 api-contract cmets 可以增加大小,尽管它们是很好的做法。良好的代码格式也可以增加行数。
关于 PHP,最好知道:是只有一个类的 2k 行,还是只有一个包含非 OOP PHP 代码的大代码?它是否与模板语句和程序逻辑混合在一起(就像我在 PHP 代码中经常发现的那样)?
通常我不计算这些行,什么时候拆分。他们只是养成了习惯。如果代码变得混乱,我会做出反应并重构。仍然查看了我们作为一个团队最近编写的一些代码,我可以看到一些模式:
这仍然取决于我拥有什么样的代码。例如,如果涉及逻辑负载(if/else/switch/for),则每个函数的 LOC 会降低。如果几乎不涉及任何逻辑(简单愚蠢的单路径代码语句),则限制会增加。最后,最重要的规则是:人类是否能够理解代码。她/他能很好地阅读吗?
【讨论】:
我不知道任何有用的方法来拆分这么简单的代码,特别是如果它们在语义上属于一起的话。
考虑是否可以通过重构消除某些代码可能更有趣。例如,如果您经常使用具有略微不同变量的特定检查组合,则将检查组合外包到一个函数中并在适当的地方调用它可能会有所帮助。
我记得曾经看过一个项目,大部分都写得很好,但它有这样的问题。例如,解析其配置文件的代码是这样复制的:
if (file_exists("configfile")) {
/* tons of code here */
} else if (file_exists("/etc/configfile")) {
/* almost the same code again */
}
这是一个极端的例子,但你明白了。
【讨论】: