这是我第一次在简书上面写文,分享一下这次重构一个项目后自身的一些感受,可能在这其中我所展现的许多观点有误,也望大家轻喷。
自己是一名软件工程专业的学生,这个项目简单的描述是一款预约APP,开发方面就两个人,我负责后端开发,另外一个朋友负责APP和web部分。
在项目最开始做的时候,我们俩就后端开发的技术选型方面有过争论,我俩在对后端应该设计成统一的web api接口供各种类型的客户端调用方面没有异议,但是我的小伙伴在校期间无论是实训还是项目都只接触过J2EE--,所以他主张用spring来做,但是我自身虽然没有怎么接触过spring,也听说过它的轻巧和高效,但是我对于java没有任何的好感,在我当初接触android原生开发的时候,java给我留下了糟糕的印象,复杂而繁琐的xml配置和大量的封装使我在阅读一些设计的不够友好的源码的时候经常晕头转向。而我们的应用总的来说是I/O密集型应用,对语言的执行速度方面没有太高的要求,所以我倾向于在轻快的脚本语言php,ruby,python之间做选择,而在学长的影响下我最终选择了Python。
不得不说,这门语言的设计哲学就是simple is better than complex, 在对开发者来说真是非常的友好。而我选择了一款在国内比较冷门的web框架-Tornado,当然为这次选择我还吃了不少苦头,因为即使有过一些web开发经验的我在最初学习这款框架的时候也遇到了不少的困难和难题,原因在于它是采用了异步模型,所幸我在google百度大法的帮助下也终于正常使用了起来。而在这时,我也体会到了什么才是轻,小。Tornado本身的web框架部分只提供了最基本的接口和使用,但即使阅读它的源码起来也并不是特别困难,我能轻松的将第三方插件或者自己编写的驱动整合进去,沿着这个思路,我就一直开发下去直到第一个demo完成。
终于,到了部署到服务器上面的时候,此时的我还天真的以为python项目的部署会和有着大量自动部署环境集成的php一样简单,但是我发现自己too young too simple。python的部署的麻烦程度超乎我的想象,在有相关中文资料的帮助下我还是被折腾了三四天的时间,我甚至认为这就是Python在中国火不起来的原因。。。而且在我自认为通过编写自动化脚本来解决每次通过FileZilla手动上传修改而沾沾自喜的时候,我面临了第一次大量的重构工作。。。各种环境包我都得在服务器上配一遍,而且坑爹的阿里云主机的源下载速度还非常的慢,时不时突然中断个两三次,而这次重构里有些特殊的进程涉及到系统配置,在本机上一次就过的情况却在服务器上因为种种原因G掉,不得不又是各种谷歌百度==
虽然最终弄完了这一切,但是这个过程也让我看到了曾经在我眼中较为完美的python所拥有的种种缺点,比如较慢的执行速度,全局GIL锁的存在使得多线程不能利用多核,部署方面较为麻烦等等等等。而此时我又了解到了Go语言,这门看起来是更像是Python3的语言,静态特性使得部署简单,原生支持并发还非常的高效利用多核,执行的性能也非常不错,但是它也有它的缺点,发展的时间太短,社区不够庞大和活跃。
由此我算是明白了,在开发的过程中很难发现完美符合你需求的工具,一件好的产品真的应该是集百家之长,而一名合格的开发人员也应该避免养成所谓的信仰,要耐得住性子经常去看看和学习别人的长处来使得自己受益匪浅。
网友评论