|
发表于 2012-9-7 22:39:00
|
显示全部楼层
Re:为什么很少看到游戏程序用到全部面向对象编程方法的?
写程序时注意数据的流向。
你的程序是把数据A转换成数据B,那么就应该采用一条从数据A到数据B的最短路径,这是最直接最有效率的方式,然后再看,A到B是最有效率的,但是A到C有点远,为了减少路的总长度,可能要让A到B的路打个弯,再在某个点打个缺口,这样就不用完全修另一条A到C的路,还为B到C打下基础,这叫代码重用。
如果在这个时候还要考虑将来通往D,E,F类型的数据转换,那么就应该在设计A到B的路的时候把这些可能考虑进来,使将来的工程成本降到最低,这叫考虑扩展性。
后来发现,在某个区域,各种数据之间交叉太深,为M种数据修MxN条路太不经济,于是你决定在数据类型上建飞机跑道,让任何经过该数据的流转都从飞机跑道进出,减少了接口数量,或者采取某种调度模式,让数据A到数据B进过间接的调度而不再直接发生连接,这叫解耦。
以上的实现,没有哪一种是非要采用面向对象的。很多时候,不采用OO的原因:
一,OO进行数据流转的方式,太猥琐,太弯弯绕了。所以OO效率不高,而且这种时候,代码可读性也不高。
二,要了解问题的本质是什么,然后要了解OO的实现机制,它适合解决哪类问题。然后你会发现,在很多时候采用OO都是错误的选择,因为这种机制挡着你的路了,不仅没能简单直接的解决问题,还增加了额外的麻烦。
在现实中很多工程问题根本用不上OO,而很多人还坚持用OO,是因为:
一,他们只会用OO,学校就是这么教的。
二,被商业化宣传给忽悠了,以为包治百病,这个行业里没这种东西。 |
|