一个悲哀的警世故事:那不舍得的问题
上周,我发布我的最新版本的WordPress插件目录表造物主 。 我自己感到自豪,我的编码,故障查找和测试能力。 这一切都在一个单一的夜晚轰然倒塌。
为了削减长话短说,新修订需要一个辅助功能,以显示职位条目。 辅助函数只由一个函数调用,因此,我当选为辅助功能包括作为该函数的孩子。 这是在许多语言中常见的做法,因为它整齐打包的所有功能,在接近其佣工。 父函数的方式被称为每次将显示一个页面,并立即终止,如果该页面不包括站点地图引发标签的时间。
确定。 时间的流逝。 现在是凌晨2点。 现在准备测试代码。 我知道父函数退出立即如果没有找到启动标签。 曾任职,我无处去靠近它,因此它应该继续努力。 对不对? 我检查站点地图页面,尝试所有新的和旧的选项和证明的代码工作。 我赶紧同步SVN库和急于到床上睡个安稳觉,在太阳升起之前。
第二天早上,我决定来检查一个大型网站,我知道,用我的插件。 有没有替代真实世界的测试。 是啊,这一切看起来不错。 在这一点上,我发现我有兴趣在站点地图中的职位。 我点击类别链接和类别中的第一篇文章,然后一个大的讨厌PHP的错误消息。 嗯。 我看着另一家大型网站。 嗯。 也许是巧合。 让我们看一个。 噢,不!
那么,什么地方出了错? 记住,儿童的功能吗? 我听说它说,孩子们可以是邪恶的,它竟然是在这种情况下的真实。 如果一个博客页面,分类页面,标签页或什至一个主页显示,在一个页面上显示多个职位。 WordPress的通过假装每一个职位是一个小型的网页,所有的迷你网页链接在一起,形成一个大页面。 这意味着,我的父函数被多次调用。 通常不是一个问题。 但现在的功能包含子功能,这些子功能创建的每个父函数被调用(即使他们不使用)。 因此,当第二个职位显示,页面崩溃重复的功能名称错误消息。 的净结果是,在一个看似无关的功能的小错误,导致一些非常大的网站去。
故事的士气:如果你是一个网站管理员,确保您运行插件更新后,每一套完整的测试,无论多么大或小的插件可能。



















