摘要:大会来了很多PHP界的大牛,鸟哥, php语言创始人Rasmus Lerdorf等各路大咖纷纷到场。 ...
大会来了很多PHP界的大牛,鸟哥, php语言创始人Rasmus Lerdorf等各路大咖纷纷到场。
很荣幸的是,聚合数据的数据平台总监罗承成作为演讲嘉宾代表聚合数据参与到了这次技术盛会中。罗承成这次带来的演讲主题是《如何编写可测试的代码》。罗承成在分享的开始抛出了一个大多数开发者会遇到的问题:开发的代码不够靠谱,同时也没有好的办法自测,导致了测试环节非常浪费时间。就如何解决这一问题,罗承成开始了今天的分享。罗承成提到:
在开发中,会有不少人因为代码维护起来太费劲,想去重构,而真的做过重构的人也知道重构之后的系统还是会逐渐走上之前的老路。
问题的关键在于没有用到自动化测试。如果在每个环节中,都能保障了关键部分的代码有效,那么项目就不会过早瘫痪。或许换句话说,自动化测试是项目唯一有效的防腐剂。关于可测试的代码,罗承成提出两条原则。
一 低耦合
二 明确的依赖关系
关于这两条原则罗承成做了非常通俗易懂的阐述:
耦合就是知道的太多了。比如在工作中,我们和另一个项目的开发人员合作,双方有HTTP的接口,但是项目里还有他们的数据库的连接。现在需要增加一个查询信息的接口,对方开发任务排满了没空做,那就直接从数据库里查吧。没问题,但是后来对方因为功能需要把数据库表结构改了,他们不会知道你怎么用了他们的数据库,这一上线就把对方的系统搞挂了。这就是因为知道了不该知道的,而且一旦知道了就免不了会去揣测对方的具体做法,做出一些不可靠的假设,最后都被实现细节相互牵制。
低耦合就是只知道该知道的事儿,不该知道的就别瞎猜,接口咋说的就咋用。依赖关系,具体的说就是要做一件事,必须满足的前提条件。比如我们去办个证,他们说需要提供某某证明,等几经周折把证明办下来了, 他们又说哦,你这个情况还需要某某证明,这个证明办下来了,他们又说了,这个证明盖的章不对,得找户口所在地的某某级别的单位盖章才行,这就是不明确的依赖。
阐述原则的同时,罗承成还引用了大量的实战代码加以辅助说明,以便在场的PHP开发者们能更好的理解。
在此次分享的末尾,罗承成总结了测试驱动开发会带来的改变:
“一开始的进度变慢了”
“写代码前需要更多的思考,分解问题,设计接口”
“测试驱动会促使你写出可测试的代码,不然写测试用例没法下手”
“有了自动测试的保护,可以随时重构看着不顺眼的代码”
“对于已经完成的代码正确性有十足的信心”
“面对新功能和需求变更,可以对开发时间有准确的估计”
“遇到bug可以快速的定位和修复问题”