每个程序员写程序时都会有自己的风格,各个系统也采用不同的编程风格,没有一个通用
的标准。但是为了探讨程序实现的性能与效率,下面就提出一些问题来进行讨论。对于一个庞大系统软件的设计,我并不赞同为了追求一些吹毛求疵的小技巧而把程序设计得很复杂或很玄妙。在系统设计中,重要的是要做到结构清楚、性能稳定、考虑周密,精心设计所有可能的情况,遍历所有的执行路径才至关重要。
现代的编译器已经足够智能,能自动作高性能的程序优化。所以,作为一个程序员,首先要专注于解决自己的问题,在准确的基础之上再考虑优化。
与之相反,由于不同的平台、不同的编译器所解释的方法和支持的特性往往也各不相同这给移植带来困难。我认为在程序中使用简单明了的语句表达,才是最好的编译风格。如果能做到以简单化复杂,所编写的程序稳定性就会提高,通常情况下效率也会提高。当然,最直接的方法用汇编来构造,但对于一个大型的系统,完全用汇编显然是不可能的。所以也不能走极端,应该根据实际情况编写简洁的程序,这可以避免歧义,也便于程序的维护。为了避免歧义,一个比较好的方法是多使用括号。例如:
b=4:
c=5;
amb+++C!
执行这条语句之后,a,b,c 的值各是什么呢?要获得答案,需仔细查阅参考书而且还要依赖于C编译器的开发者也严格按照参考书上的规范来实现。由此引出很多的麻烦和代价为什么非要使用这条晦涩难懂的语句呢?不如写成:
a=(b++)+c;
或
a=b+(++c);
意思不就很清楚了吗?为什么非得一定要搞得很含混?即使对于+十与+的结合顺序搞得非常清楚明了,也不要使用这样的技巧,除非写程序的目的就是让人看不懂
我认为,程序设计中,简单是最好、最直接的方式,也是效率最高、最不容易出错的方式就好比人的手和脑一样,是人最直接、最宝贵的工具。我画图就常使用画图板,有一次一位同事作一些界面图标,花了很长时间还是对不齐,结果我教他使用画图板放大的模式来数点数一下子就数明了,程序设计的道理也是类似的。
上面只是一个例子,说明程序一定要写得易懂、易读。这样就可以减少错误,减少误解多用括号是减少歧义的一个很好的手段,它比记住各种程序设计中的结合顺序以及正确地熟练使用要简单容易。又比如:
if(a&0xffllb+c>6)
在这里要注意的是空格并不改变结合顺序,所以写成 b+c>6与b+c>6或b+>6都没什么不同。上面这个条件表达式也许满足了设计者的意愿,但看起来很不严谨。可能会有不同的理解,或者需要查语法才能确定。b+c>6 到底是(+)>6呢?还是 b+(c>6)呢?正确的做法是写成如下的形式:
if((a0xff)l]((b+c)>6))
这样写就很规范清楚明了
领取专属 10元无门槛券
私享最新 技术干货