什么时候才能形成一种好的编程习惯?

 

      一直以来,各种介绍C/C++的书中都告诫我们在条件语句中,判断两个值是否相等时,把常量写在等号的左边,这是一种好的编程习惯。道理比较简单,因为你很可能因为输入错误把“==”写成了“=”,这样条件语句很可能得不到你预期的值,程序也就无法按正常逻辑运行了。比如:

if( a == 3 )

{

    执行A计划;

}

else   

   执行B计划;

 

如果你写成下面这样的:

if( a = 3 )

{

    执行A计划;

}

else   

   执行B计划;

 

      那么你的B计划永远别想执行了。因为条件语句的值为3,永远为真(非0)。编译器通常也不把这种写法视为错误,不会有任何提示。

      如果你把条件写成(3 == a )时,即使你少写了一个等号(3 = a ),编译器也会帮你发现错误,因为C++中常量是不能作为左值的。

      这个道理我很早就明白,可自己在写的时候很少想到写成这样的。因为大一学C++时,养成了把常量写在右边的习惯了。这几天抽一部分时间在补Win Socket编程,其实以前做一个课程设计时写过的,但那已经是long long ago 了。今天在写一个UDP通信的小程序时,一个小BUG让我足足找了3个小时才找到。我发现了把常量写在“==”左边的另一个好处!

     我在客户端写了这么一段:

if (int ret = sendto(s,"hi,I'm Client",strlen("hi,I'm Client")+1,0,(SOCKADDR *)&recvAddr,sizeof(recvAddr) != SOCKET_ERROR))
 {
  cout<<"发送成功"<<endl;
 }

 

      于是服务器端怎么也收不到数据,客户端还一直告诉我,“发送成功”,于是这样,我的注意力被吸引到服务器端,三个小时就浪费了!最终才发现,原来我把!= SOCKET_ERROR写到sendto函数的括号里面了,最后一个参数我传入的是sizeof(recvAddr) != SOCKET_ERROR。

      看来,好的编程习惯不是看书看出来的,也不是写代码出来的,而是写的过程中不断地改出来的!看来以后随时都得注意纠正自己编程中的不良习惯了!今天的午休时间又严重拖延了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值