我们先撇开编译器的差别, 来看下面一段代码:
int n;
int a[n]; 你知道我想说什么了吧?
有一点是不会错的, 那就是当你在定义一个数组的时候, 你必须同时将他的长度确定下来, 也就是说, 你不能让一个数组的长度成为一个不确定的量.
出于这个考虑, VC 不能让你的程序通过.
if(r_array && size>0) // 对于这行代码你怎么看? 你是不是觉得多余?
随着编程的经验的积累, 我越来越觉得安全的重要性, 我觉得一个函数应该尽量不要别人的照顾, 这句话怎么来理解? 我的意思是说, 当你在写一个函数时, 你应该考虑这样一个问题, 这个函数在怎么样一个前提下才能安全运行, 或者说, 这个函数的安全运行有没有先决条件? 如果有, 那么这个函数本身就应该自身设防, 他的自身的安全不应由别人来负责.
我前几天浏览了Mozilla的网页, Mozilla提到了他们公司的代码风格, 其中提到了我上面所说的这一点,我非常认同Mozilla的这一观点. 因为一个函数很有可能在代码的不同段被调用, 如果函数能够为其自身安全负责,那么安全系数就会提高很多. 要知道, 程序员粗心的几率是很高的, 但是如果你书写代码保持这样的风格, 那么可以将危险系数降到最低.
此外, 不管循环语句或判断语句中是否需要花括号, 一律括上括号. 这一点我非常认同.
你的代码中, 我也没有完全帮你改过来.
比如
for(int i = 0; i<10; i++)
{
cout<<"hello ";
}
不过, Mozilla 的有些观点, 我是绝对反对的, 根深蒂固反对的. 由于Mozilla 聚集了很多Linux程序员, 他们有一个让我非常反感的习惯, 那就是起始花括号的位置的问题,
你经常会看到这样的代码风格, 比如这样:
void func(){ // 注意这里, 那个起始花括号直接跟在了函数名之后, I must say, NO!NO!NO!
// function body
}
我个人认为这样的风格很丑陋, it's terrible.
很多Java 程序员也是这样写代码, 在看这样的代码之前, 我必须将那些花括号对齐. 在这一点上, 我是坚持的, 而且很固执, 决不妥协.