TheRebirth 发表于 2016-2-16 10:37:13

看了《代码大全》之后突然开了个脑洞

《代码大全》里面曾经提到,对于编程,有些人把它看作科学,有些人把它视为手艺,有些人则把它视为艺术。
我在看到《代码大全》第8章:防御式编程时突然有了个想法。
譬如,在我目前正在制作的游戏的系统架构的RTS模块中,应当有一个类用来描述玩家在游戏中能看到的最低数量士兵单位(即一人),名字还没定,假设是BattlerUnit吧。
按理说,BattlerUnit对于各个种族的士兵都应该适用,但是在这里我为了能描述两个种族不同的性格,我只把BattlerUnit作为基类,绝大多数成员函数都将被声明为虚函数。并且在BattlerUnit下面创建两个派生类CatsUnit和DogsUnit。
对于CatsUnit,为了表现其友爱和包容,我可以在写异常处理时把重心放在对错误输入的修正上,
而对于DogsUnit,为了表现其对于纪律的重视,我可以在写异常处理时把重心放在ASSERT上。
我还可以这样做,将我的设定中写到过的每一个角色都写成单独的派生自CatsUnit或DogsUnit的类,将属性值都写成const锁死,用来突出TA与普通士兵的区别。
如此类推,即使是程序码也可以成为能用来塑造世界和各个角色的剧本与设定。(不过或许多数程序员都不愿意这样做,因为这会直接把系统架构搞砸,并且令各个类都显得晦涩难懂。)这样一来,说编程是一门艺术,自然也是有根据了呢。

tnl 发表于 2016-2-16 15:54:41

去年我和某先辈在技术群里谈过类似的话题(关于用代码表现世界),然后被教育了一通。后来想了想,这个问题的话可能解决思路不见得要从“为了达成某效果而用某编程技巧”出发(这也是你说会搞砸架构的原因之一),而是从“如何抽象世界”出发。所以我个人倾向于把这些逻辑和游戏的表现分开。
但是世界毕竟太复杂……(笑)无论是建模还是计算都可能成为问题。尤其是各式各样的依存关系,会让脚本也变得相当复杂。

霜月 发表于 2016-2-16 19:53:22

_(:з」∠)_……讓程序做程序該做的事吧
劇本的事,就交給寫劇本的傢伙

好吧我是变态 发表于 2016-2-16 21:29:36

这门艺术感觉太过深奥……

sea 发表于 2016-2-17 15:42:15

直到派生类之前全看懂了……(略累)
页: [1]
查看完整版本: 看了《代码大全》之后突然开了个脑洞