面向数据编程


最近一阵在做一个自动化的工具,把一些机械化的重复工作,用配置数据的形式固化下来,自动进行,配置数据尽可能简单明了,最好能让产品经理也可以操作,这样就可以大大解放生产力。

由此,我不由得感叹,数据真是程序员和非程序员之间交流通信的良好媒介——看不懂代码?数据总能看懂吧?

面向数据编程的第一个好处,就是将程序员从日常琐碎的工作中解放出来,把身上的负担分出去,然后去做更有意思的事情。


昨天吃午饭的时候,组里的一个萌新小伙跟我闲聊起软件设计,问什么时候该使用类包装一下,什么时候该使用继承,什么时候又该使用组合等等问题。遥想当年,我也曾这样有激情有冲劲,什么都想问个为什么。扯远了,说回这件事。这时,作为一个“老”程序员,为了逼格,当然要祭出大名鼎鼎的“Gang of Four”的设计模式经典书籍,当然,最后还是要补充一句,“看情况”。补充这句的主要原因,其实就是如果陷入GoF的设计模式之中,很容易过度设计,将一个简单的功能设计的叠床架屋,得不偿失。

这时,如果能心中牢记面向数据,以解析数据为依托设计程序架构,以简化数据为目的演进程序架构,往往很多模式的使用就是很自然而然的事情。

所以这是面向数据编程的第二个好处,有助于程序架构设计向更好的方向演进。


在接手一个新项目,或者阅读别人的程序时,我经常会发现,通过数据能够更加方便的理解整体架构,因为数据往往是和业务紧密相关的,数据在说明业务“是什么”,而代码是在说明业务“怎么做”,上来就看执行方案,经常是搞得一头雾水。数据和代码往往能互相印证,互为解释,大大增加程序的可读性与可维护性。

在做游戏开发时,这方面可以说做到了极致,数据与逻辑分离又互为解释。对于一些陈年老系统,找不到当年的开发者时,通过和策划、QA一起同时研究对应的数据表以及相应代码,往往就能把相关的结构理解的七七八八。

这里,就是面向数据编程的第三个好处,有助于增加程序的可读性与可维护性。


最后一个好处,也是往往对程序员最“有用”的好处,就是甩锅啦!对于一个完善的面向数据的功能模块来说,进入运营期后,往往就可以直接交付给策划/PM/运营,对相关的数据进行维护了。这里,一方面,技术责任大幅降低;另一方面,出了问题也会优先考虑是数据表没有填对。再者,线上问题,无需修改代码逻辑,只需修改数据文件重新加载即可,心理压力也大大降低。


总结一下,所谓“面向数据编程”,至少可以带来以下几个好处:

1. 将程序员从日常琐碎的工作中解放出来,把身上的负担分出去,然后去做更有意思的事情;
2. 有助于程序架构设计向更好的方向演进;
3. 有助于增加程序的可读性与可维护性;
4. “甩锅”。

所以,回顾最近写的代码,找出那些可以抽取出数据的部分,面向数据编程走起吧!


推荐阅读:

scala模式匹配的一个问题
scala中的传名调用
待业青年

转载请注明出处: http://blog.guoyb.com/2018/01/28/data-oriented/

欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考:
后端技术小黑屋

Comments