编程与游戏
By admin
小时候打过不少电子游戏,工作后总会回想起当年荒废了的那些时光,但当年也确实得到了很多欢乐。
最近有个新同事入职,很爱学习但是从来不玩游戏。一般来说程序员不太可能有从来没玩过游戏吧,他大概属于那种特别听话的好孩子吧,于是我经常在指导程序之余用程序和游戏举个例子,顺带吐他个槽—-让你不玩游戏哈~。
自从干上了程序员,那种对游戏的执着有一部分确实的转移到了代码上。比如当年玩的各种rpg,都会想打个完美存档,该收的宝物一定要收到,该走的情节一定要走全。这种执着转移到代码上之后,就变成了什么地方都会想做到最优。但什么是最优呢,在不同的编成阶段,也会有不同的理解。就像《黑客与画家》里描述的,这种优化(绝大多情况下指的不是运行效率,而是指架构和谐,命名合理,模块复用等等)没有尽头,只有程序员最后不想做了的结果。
很多游戏有二周目,在一周目打不了的情节,或者一些单选的分支只有在多周目中才能凑全。体现到项目中,恩其实你可能已经想到了,那就是重构。重构由什么人来进行呢?必须是做过该项目的同一批人马,如果说换了一波人重构,那和第一次做也差不了太多,该趟的雷还是得趟,躲不过的。就像即使玩二周目的游戏,如果换了个玩家,一周末的存档有哪些分支走过了,有哪些窍门统统不知道,除了继承了点金钱和装备(项目第一版的代码),和第一次玩也没啥区别。真的想能有同一批人的第三或之后更多次的重构,那真是开局即可自带穿越优势。
我时常教导年轻同事,当你接触到一个新框架,新类库时,一定要先把整个api文档看一遍,不指望记住,事实也记不住,为的是大概有个印象。当你需要用的时候不用自己造轮子,还没人家现成的造的好用。这条经验对应到小时候玩的街霸、拳皇,就是你可以直接玩,但是不会发招,总是被打。api文档就相当与出招表,过一遍,选个合适的人物,投入实战开练,在与其他角色的碰撞中逐步熟悉,知道什么情况下用什么招数,尤其是在合适的机会用终结技取胜,满足感爆棚。