选择正确的库
选择安装合适的外部库是一项真正的挑战。我们都曾遇到过,或者总有一天会遇到。原因很简单:没有必要重新发明轮子。我们想要安装外部库的原因通常都是一样的。我们有一个特定的问题,希望尽可能干净利落地解决。这里会出现两种情况:
-
我们知道如何解决问题,但我们不想在已有工具可以简单解决问题的情况下重写一切
-
我们不知道如何解决问题,因为我们缺乏理论或实践知识
因此,调用一个外部库是非常有趣的,它的作用是为我们的情况提供非常具体的解决方案。其优点是多方面的,在此将一一列举:
-
开发外部库的人员可能已经考虑了几天或几周,以最佳方式提供解决方案。这甚至可能是他们的日常工作。无论他们花了多少时间,这些时间往往都超过了我们冷静思考解决方案的时间。
-
如果依赖关系仍处于开发阶段,则其维护工作将由其它人而非你来管理。这意味着你将定期收到错误修复和新功能,这要感谢这些志愿者,他们为你提供了最宝贵的资产:他们的时间。
-
如果你使用的外部库是开源的,那么你还将获得以下额外的好处:
-
源代码对所有人都是可见的。这意味着任何人,如其它开发人员甚至安全研究人员,都可以分析源代码,以强化它并修复安全漏洞(或至少通知作者)。别误会我的意思:开放源代码对安全并没有坏处。事实上,情况恰恰相反。混淆安全(理解为隐藏源代码等东西以确保 "安全")是最糟糕的事情。安全必须通过其它手段来实现。证据并不缺乏:世界上最常用的加密和密码算法都是众所周知的,其功能在互联网上的 1001 个地方都有完美的解释。这并不影响其安全性。
-
如果开放源代码项目被放弃,那么随之而来的就是各种倡议(称为 "分叉")。简单地说,"分叉 "就是那些复制了某个项目的源代码并独立于原项目的开发而自行开发的人。从理论上讲,这可以确保项目的无限寿命。
-
如果项目的主要维护者不再有时间打理项目,但开发者希望这样做,源代码对所有人开放,他们就可以这样做。
-
如果你好奇,可以深入研究源代码,了解该库是如何解决问题的!
-
我们可以清楚地看到,选择开放源代码的依赖性是不可避免的。如果你想确保不会在一夜之间得到一个无法使用的工具,那么开源就是为你量身定做的,因为你可以毫无顾虑地保存一份源代码副本,想保存多久就保存多久。这是选择外部库的第一个绝佳方法。
第二个需要考虑的因素是项目的更新频率。很明显,如果一个项目是开源的,但几个月甚至几年都没有更新,那就要小心了:这可能是一个废弃的项目。在这种情况下,这意味着该项目可能不再支持 PHP 的下一个版本,或者不再修复漏洞和安全缺陷。要知道一个项目是否仍在维护,有两种毫不费力的方法,在此列出:
-
首先,你可以检查库最后一个版本的日期。再次要小心,因为有些项目的发布过程(非常)缓慢,建议将此方法与第二种方法结合使用。
-
这是第二种方法。查看源代码的最后修改时间。这很容易做到,尤其是源代码托管在 GitHub 等网站上时。通过浏览文件,你可以看到文件夹或文件的最后修改时间。这可以很好地说明项目的开发动态。
第三个需要考虑的因素是库的文档。你可能希望确保该项目有最基本、最充分的文档来进行基础设置。如果没有提供任何文档,可以肯定的是,使用外部库将是一个系统性的痛苦。事实上,在没有文档帮助或知识共享的情况下,所有代码维护工作都将变成一场记忆项目工作原理的战斗。此外,这还可能与你想使用的技术周围的社区有很大关系。如果只有极少数人使用你想集成到你的项目中的技术,而且社区非常不活跃,甚至根本不存在,那么就没有人能以最佳方式帮助你。这也是决定是否在代码中使用这个或那个依赖项的有效方法。
第四个因素是库本身所依赖的依赖项的数量。一般来说,我们更喜欢依赖项数量很少的库。较少的依赖关系意味着需要更新的软件包和第三方较少,因此其中一方出现问题的几率也较小。
最后,许多项目的主页上都有持续集成(CI)徽章。通过这些徽章,你可以一目了然地了解测试覆盖率(提示:测试覆盖代码的比例)、测试数量、最新版本等信息。显然,最好选择测试数量越多、测试覆盖率越高的项目,以减少更新时出现的问题。