引用第17楼ltl于2011-06-01 11:12发表的 :
呵呵,谢谢LS的指点
其实这是我第一次写树链剖分的代码……本来还算正常……后来看着那堆for有点不爽就缩在一行for里面了
为什么不推荐这样写??我看不少神犇的程序都是这样写的,感觉很美。你是说要写成m > 0或者m != 0这样吗?
谈不上指点,俺水平不高,只是作为代码民工对
可读性比较在意而已-。-
我觉得还是写成m > 0或者m != 0这样比较好,很容易就看明白。
另外对于我说的那个第一点说明下,经验之谈而已,可能大家见解不同。
1、把赋值包含在里面,如果简单的程序还好办,但结构层次比较多,复杂的时候,你没法分开判断究竟问题出在哪里。类似比较严重的就是这种vector_some[ function(...)],
在一些情况下你完全没法判断function到底返回了什么。
2、自增自减运算符在不同的编译器中结合次序是不同的,所以尽量少用,如果用的话尽量语义明晰,不会出现二义性。你这个里面用的当然就没问题~~
3、上在某些函数中用了很多次类似dimenson[ index ]这样的调用,而如果一个非常大的函数要用多次的话,可以根据实际情况来放在某个变量中,
否则每次都要进行索引是很浪费资源的。
极端点的例子,我见过在for循环中对同一个string进行strlen()的代码,这样每迭代一次都要重新计算一次strlen(),本来应该很快的东西也变慢了。