By烟花易冷

个人开发者构建较大型销售系统的一点点反思
2017-07-29

最近宅于家中,做起了一套类似于WHMCS的“主机销售系统”,起因是与朋友一声玩笑下,又重新打起了创立一个虚拟主机提供商的主意,[当然了实现可能性是基本为0的,必须公司注册资本100万人民币以上才能申请增值电信业务经营许可证(营性ICP证)],其次我也再为数据结构的课设而在做准备,就着手做了一套主机销售系统,由于没有经营虚拟主机提供商的资质,所以目的仅有一个,那就是练练手。现在遇到的一些小问题记录一下,方便自己也方便各位来看我博客的朋友引以为戒。

Git版本控制

在版本控制方面我自己做的一直不够好。之前有幸得工作室老师指点,通常对于一个团队而言,每个人从 master 创建出自己的分支进行开发,然后进行合并。这次由于整套系统是我自己一个人制作,我也便贪图省事,没有创立出 develop 分支,直接在 master 上进行开发(逃),这个坏习惯真的应该好好改改了,无论是个人项目还是团队项目,独立出来保持 master 是最新稳定版本都是十分有必要的,如此一来别人下载你的项目时起码是能正常跑起来的稳定版。

在 commit message 中,一句简洁的概括性语言十分有必要,我在这点自认为还是较好的,通常运用 “添加***” “调整***” 等词汇可以大大 节省队友对于版本迭代的接手以及自己的管理,望诸君共勉。

整体统筹方面

一个好的开发组组长真的十分重要。之前的项目中我对此的感觉还不明显,这次我切切实实体会到,一个项目的大局观,真的是科班学生所必需的技能,也难怪我们在大一高级程序设计第一个课设中,就要求我们预先交上项目模块流程图,检查审核通过之后再进行开发。就拿主机销售系统的订单模块为例,除了常规的考虑订单的 id 订单号 价格 时间 付费方式等常规字段以及所属用户、所属产品、开通产品的外键外,还必须考虑上额外的字段用于判断续费时产品价格是否需要变动、若使用优惠码则其是不是仅仅针对首年等信息,还要考虑原关联产品是否下架、不同类型账单过期时间等问题,远非“眼见为实”这么轻松,一次次新功能的加入也导致了我修改了几次我数据表的字段设计。在一个项目开工之前,作为开发者的你,你应该仅仅局限于你要实现的功能,你要怎么快速实现你的功能,还要考虑好自己的项目未来会有什么新功能,为未来如何添加这些新功能做准备,摆脱做外包时的快餐式编程思想才能真正做好一个长期发展的项目。我想这也是为啥现在用人单位也许并不多在乎你是不是C9、985/211出身,而是看重你做过什么项目,担任项目组里什么职位的原因吧。

代码重用

这似乎又是一个老生常谈的问题了。就拿前端页面来说,看着我这一页也显示不完的view,我自己的内心也是崩溃的,重点是不少页面其实是大部分相同,只需要稍下功夫就可以重用的。

在这次主机销售系统的前期策划中,我并没有对页面进行很好的归类与划分,不少页面是功能模块写好了之后需要页面展示了才想着去创建一个页面,导致最后出现了版面与所需要展示的内容类型其实差异不大却用了两个的页面文件来分别显示的情况,它们“底子上”是可互换的,给自己的后期维护带来了一定的困难。并且命名我事先也没有预先规范好,不够体系化,包括路由的路径与命名亦是如此,这也是我下次 必须注意的地方,毕竟代码写出来,不仅仅是机器去运行,还得人来看/嘻嘻。

规范与设计模式

由于最近重看了一些被大牛们嗤之以鼻的“入门到精通”类书籍,对所谓的“PHP书写规范”又有了一份回忆,包括不同功能块、不同函数之间的空行以及,和’之间的空格这次我也在书写时留意了, 暂且不说它是否真的规范,但在阅读时的确给自己带来了便利。这次项目我才用了 Laravel 框架,并且遵循了 MVC 的设计典范,至于具体的设计模式我也没有过多的深入了解,这也是我接下来打算做的事情吧,作为一名计算机系的专业学生,也入学一年了。做好这个系统之后是该开始看看设计模式方面的东西嘞。

写在最后

行文至此,也一千六字矣。完完整整做出一套长期维护的系统并没有想象中的那么轻松,抛弃外包的快餐式编程思想尤为关键,望诸君共勉。在下涉世未深,以上仅代表个人想法,欢迎前辈指正。