我说说我的想法。
首先,很早以前我也跟现在的LZ一样想。效率决定一切。我写很简练的代码。并且很自豪,认为执行效率上是最优的。那个时候一遍又一遍往死里优化代码真是家常便饭。因为我只是一个学生,写的代码都是给自己看的。那个时候每看到自己的程序都会很兴奋。
但是后来我看到了额LS某一楼的一句话,“算法只要在正确.可靠.可读.可移.前提下才能进行再次优化....”。当时我想了很久很久。效率真的错了吗?我的程序很难懂,有些地方使用了技巧很高的语句。甚至很多地方都是不可跨平台的。难道必须要忍受那些“可读,可移”的代码吗?
后来我想通了。其实这两种意见是可以综合的。代码的效率不是源于源代码的长度,而是编译后的目标代码的长度和实现。从那以后,我都会很规矩地写代码,在确保编译后代码最优的情形下优化。以前我很喜欢用短路的&&,||,?:来代替if,觉得紧凑就是高效。但是现在我都大方地使用if。这只是一个很小的例子。我们可以追求源代码的可读可移,也可以追求目标代码的高效。在使用了小技巧的地方,我会留下注释。我觉得这也是很重要的一个部分。
数据结构和算法我的想法仍然和LZ一样。简单实用为好。不盲目使用复杂的算法。以前我也很喜欢弄得很复杂。明明可以用数组的地方我非要用封装了的栈或者别的什么。以为那就是高效。但是其实如果只是使用简单的代码并注意保持低度的耦合的话,效率可以仍然很高。这其实是双方面的。在嵌入式里面,非常需要效率的地方,可以使用嵌入汇编或者别的什么,反正往死里优化,留下详细的注释以供维护。在PC上面,可以写很优雅很简洁(但不很难懂)的代码,以提供良好的维护能力。
最后要说的是代码的封装。不错,现在提倡OOP,但是要注意,不良的封装还不如直接写C。OOP的精髓在于信息隐藏。所以凡是实用就好。该用到全局的东西的时候就用。没有必要非要靠向OO。论坛上许多代码都封装得一塌糊涂,实在是不忍卒读了…………
缩进也很重要。这里推荐一个排版软件AStyle。可以嵌入到VC里面。希望提问题的朋友先用这个程序把代码过一遍。我本人喜欢Kr风格,简洁,整齐。
其实说来就是一句话。我的目标就是优雅高效:代码要优雅,执行起来要高效。
呵呵,希望大家共同进步哦~~
[[italic] 本帖最后由 StarWing83 于 2007-12-18 01:47 编辑 [/italic]]