易截截图软件、单文件、免安装、纯绿色、仅160KB

关于《0 bug C/C++商用工程之道》的一点说明

我这两天在CSDN论坛开了一个散分贴,想宣传一下我的书。大多数朋友还是很友好的,对我的支持和鼓励很多,我也很感激。
网址在这里:http://topic.csdn.net/u/20091216/22/5a6594be-21e6-459e-ab41-57755273f465.html
当然,也有朋友认为肖某人吹牛,说0bug不可能,并且隐隐有PK的意思,我呢没办法,写了个说明。
这里想了一下,也在这里share出来,大家看看,如果觉得肖某人有诚意呢,给个好,诚意还不够呢,继续探讨。
呵呵,还是那句话,一家之言,欢迎拍砖哈。
原文就不摘录了,太长,这个问题的起源呢,是我书目录中有个提法,建议不要用do...while()语句,因为有潜在的bug风险,当然,一部分朋友就此开始论战,举出各种例子来证明肖某人胡说,甚至还设置一些程序陷阱,来故意制作bug,以证明不用do...while()语句,就不可以写出程序。
最后没办法,我回了个长文,这里贴给大家看。
嗯,刚才哄娃睡觉呢,没空想问题。
现在想了一下,我发现我被你绕进去了。
do...while()是典型的循环语句,被你用作宏包容器了。
嗯,我的无错化程序设计原则里面有一条,严禁一语多义。
这个呢,有两层意思:
1、不要在同一行写太多代码。阅读的人无法理解。
2、不要故意耍技巧,把A含义的语句故意写成B含义。
无错化的含义,主要就是写人阅读无障碍的程序,好的程序,从易读开始。
因此,do...while()用作宏包容器本身,不会在我的程序里面出现的。我会回避这种写法。
一语多义,由于给阅读者误导太过于严重,一般严禁这种书写方法。这是减少程序bug的关键。
因此,不管你怎么举例子,我只能说,我会按照我的方法写程序。
C语言太灵活,用法太多,不约束一下,确实不好控制bug。
很多时候程序bug,是由于程序员理解有误造成的。在公司里面,我们的代码通常写完后,还有后续的其他维护者,因此,一般说来应该写易读的程序,才会减少bug的。
也许以前很多前辈的代码,用到了很多C的花样和技巧,也能编译通过,也对。
但是,我想我不会用。因为我怕bug。
因此,这里我说句话,请各位坛友了解一下:
我书里面介绍了我的一些实战方法,来减少bug,但这并不绝对。
首先,这不是唯一正解,大家完全可以自行寻找自己的正解,想偷点懒,省点事呢,直接看我的书也可以。不看也无所谓,并不是说,离了我的书就写不出程序的。
其次呢,C和C++语言灵活性太大,一种算法,可以说有一万种写法,我的原则很简单,每种解法,只要一套方


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

ACE+gSOAP实现高性能WebService Server(C/C++)

1、开发环境请参考《搭建ACE-5.7.4+VS2008开发环境》一文
2、gSOAP库,下载地址:http://gsoap2.sourceforge.net/,本文使用的版本是:gsoap_2.7.15,gSOAP的编程可以参考doc目录下的soapdoc2.pdf,官方文档写的非常详细。
让我们开始gSOAP编码旅程:
1、创建gsoap_server.h:
//gsoap ns2 service namespace: http://l ......

《C和指针》笔记1

1.scanf格式符        p9
ld    long
lf    double
2.三字母词        p22
    为了表示一些特殊的字符,在老式的机器键盘中可能没有的字符,特别约定了一种三字母词,三字母词都以??开始,如下:
??( &nb ......

从bmp转换工具生成的c文件中获得bitmap图像输出

在函数体中添加以下代码:注:memcpy中的bitmap为bmp生成的c文件数组名
 int width = 533;
  int height = 615;  
  BYTE* DDBdata=new BYTE[width*height*2];
  BYTE* DIBdata;
  memcpy(DDBdata,(void *)bitmap,width*height*2);
  
   ......

用c编写求信息论中各种熵和信息量的程序

#include<stdio.h>
#include<math.h>
#define u 20
int i,j,n,m;
float Ix[u],I[u][u],H_X,H_Y,H_XY,I_XY,H_XpY,Pypx[u][u],Px[u],H_YpX,Py[u],Pxpy[u][u],Pxy[u][u];
/*定义的Ix[]=I(x[i])自信息;I[][]=I(x[i];y[j])互信息;H_X=H(X)平均自信息;H_XY=H(XY)联合熵;
I_XY=I(X;Y)平均互信息;H_XpY=H(X|Y ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号