(1)使用智能指针。(《游戏编程全接触》人民邮电出版社)
(2)虚函数加上前缀“V”,如virtual VRestore()=0;
(3)除了一些特殊情况外(如矩阵运算),不要重载操作符
(4)封装自己的CSurface类,而不要直接用dx和gdi.
(5)好的类架构不应该像一把瑞士军刀,它应更像一把平衡性很好的飞刀
第5项不谈,属于抽象类,正常人看不懂。
第4项属于做软件架构的常识,值得注意。
第3项没有必要这么教条,难道字符串类也不重载+运算符?其实是否需要重载需要针对情况分析,如果表示的含义的确是加法,为何不能重载?
第2项和匈牙利标记法倒是有异曲同工之妙,好不好也是见仁见智,争论无益,不过既然如此有争议,有必要这么教条么?
第1项,也就是使用smart pointer,有它的便利之处,不过我从来不用,因为它使得代码阅读和调试有点麻烦。我用其他方法保证指针不会被非法引用。
我谈到这些并不说这几点好或是不好,而是凡事没有必要这么教条。接触了很多程序员,有些人会抱着一些经典条款,到处套用,反而限制了自己的思路。什么忠告,要点这类秘籍,与其给一些条条框框,不如给一些分析,说清楚哪些做法会导致什么问题,有什么解决方法,从而才能真的给人以帮助。
我谈到这些并不说这几点好或是不好,而是凡事没有必要这么教条。接触了很多程序员,有些人会抱着一些经典条款,到处套用,反而限制了自己的思路。什么忠告,要点这类秘籍,与其给一些条条框框,不如给一些分析,说清楚哪些做法会导致什么问题,有什么解决方法,从而才能真的给人以帮助。
没有评论:
发表评论