我在周末注意到 Facebook 主页的 PHP 代码已在线发布。为了避免法律上的困难,我不会在这个网站上发布代码,但你可以在这里找到代码。作为一名 PHP 程序员,我觉得自己得到了极大的享受。 Facebook 是使用 PHP 的最受瞩目的网站之一,我很高兴看到这样一家强大的公司如何编写其代码。
分析完代码,我有几点思考。
许多包含和 Include_Once() 的使用
正如预期的那样,主页本身包含多达 24 个文件,其中包括一个主配置文件。 Facebook 使用 include_once()
作为我喜欢的选择方法,因为它可以防止多次包含文件和覆盖已更改的设置文件。我确实想知道主要包含的文件中包含了多少文件,以及加载主页对他们的服务器做了多少工作。作为一个挑剔的 PHP 程序员,我讨厌程序员不在 include/require 函数中使用括号,即使它们不是必需的。
缺乏/不一致的评论
Facebook 程序员比我更了解目的代码,但我希望在页面内有更好的评论。我假设 Facebook 有大量的编程队伍——评论对于让那么多程序员保持文件正常工作难道不是必不可少的吗?显然不是,所以对他们表示敬意。我最喜欢的评论:
//We special case the network not recognized error here, because affil_retval_msg is retarded. //Make sure big tunas haven't moved around
少于 500 行
考虑到页面处理量,文件大小(17.2 KB,约 450 行)给我留下了深刻的印象。删除空白行,文件可能会更短。
自由浮动函数
我对自由浮动函数的定义是一种非 PHP 原生的函数,也不是类中的函数。我不喜欢自由浮动的函数,因为它们使代码看起来杂乱无章。例如,我更喜欢创建一个带有 require
函数的 js
类:
require_js('js/bludice.js'); // Boo! $js->require('js/bludice.js'); // Yes!
Facebook 只使用自由浮动函数——看不到 PHP 类。呸。
最后,我发现代码并没有我想象的那么神奇。如果不查看支持库文件,就很难清楚地了解 Facebook 的基础架构是如何工作的。我敢打赌,Facebook 也希望保持这种状态。