我这两天在CSDN论坛开了一个散分贴,想宣传一下我的书。大多数朋友还是很友好的,对我的支持和鼓励很多,我也很感激。
当然,也有朋友认为肖某人吹牛,说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++语言灵活性太大,一种算法,可以说有一万种写法,我的原则很简单,每种解法,只要一套方案就够了,这是为了更大限度地减少程序修改量,降低调用者的复杂度,从这个意义上讲,我想我是成功的。至于还有没有其他更优解,我想是有的,各位读者完全可以自行探索。我在书中一直强调,代码不值钱,值钱的是思想,就是希望通过我的分享,帮大家掌握工程库的书写能力,那么,有朝一日遇到我没有说到的内容时,读者完全可以跳出书的框框,自行实现。我不认为我写书的这个目的有错。
第三呢,当然,有时候我们手边的解法,原来有用,现在由于需求变了,性能要求变了,原来的不合用,怎么办,我的意见是完全可以推翻重写的,我的代码又不是圣旨,不可以改的。事实上,我自己现在都经常推翻自己的代码重来的。我很高兴看到大家能推翻我的代码,甚至结论,另行创造出更加优秀的解法。如果可以的话,我甚至希望大家也和我一样分享出来,我也学习一下。

嗯,每本书有每本书的定位和方向,我本意也不是写一本大而全的参考书,只想就C和C++并行开发中,无错化的方法做点探讨,覆盖的广度肯定比不赢CSDN这么多高手所有人之和,因此,找书的漏洞,太容易了,可以说比比皆是,只是呢,我希望大家伙能善待一点,书中有用的,拿来用好了,没用的,就请略过,也不用太顾及我本人的面子什么的。

说到这里,可能有人说书价,现在烂书多,书又贵,一本书如果买了没用,才是真的浪费,因此我一直建议,大家如果觉得不放心,怕上当呢,请去书店翻翻,觉得有价值再买,我想应该能帮绝大多数朋友解除这个顾虑。

嗯,再多说一点,前面的言语可能有点冒犯大家,说实话,这段时间天天洗尿布,洗得我头都昏了,因此很多话呢,没经过脑子,请大家见谅,勿怪。
我呢,也只是中国众多的程序员中的一个,我有我的长处,比如说打字快,写代码快,另外呢,我自己努力研究无错化程序设计方法,bug比较少,但是,我不是全才的。这里每个朋友,应该都有自己的长处,计算数学,太多的点了,研究透一个点,就算牛人。
因此,大家如果在某个方面强过我呢,我完全同意。也愿意向大家学习。

这里呢,就请不要用某个特例来论证书中某个提法是错误的了。
我只能说,在当时当地,确实出现过问题,我用书中的解法,解决了,我就认为它是正确的。至于还有没有正确的解法,我说过,肯定有,可能你们的方法比我的还优秀,我也欢迎大家分享,让我也学习一下。

do...while()的回避使用,是我的习惯,我有我的道理,并且也分享在书里面了。大家有兴趣,就看看,同意呢,就照做,也许能帮到大家减少bug也说不定。至于不赞同呢,也无所谓,完全可以使用自己的方法解决。只要能出活,出高质量的活,什么方法其实并不重要的。

还有就是,书刚刚开始卖,为了宣传,为了把书卖好,我确实起了一个看起来很拽的名字,也把目录和部分章节公开了。但我认为,这至少不应该成为受批评的理由吧。
书好不好,请看了再说,单单一个名字,大家已经打了半天嘴仗了,我觉得有点浪费时间了。

肖某人呢,一直在学生大本营做老师,先说是完全免费的义务工哈,自认为说话比较诚恳,喜欢交朋友,在那边,也确实交到了很多好朋友。
我不是什么培训机构的老师,我也不是需要靠授课来赚钱,我有自己的工作,是做数据传输的工程师的。写这本书,我有几个目的:
第一是总结一下自己十几年工作的经验,日子久了,怕忘了,写出来。
第二呢,计算机软件编程我是自学的,我原来学建筑的,我学的时候,没老师教,很难的,我挺同情现在一些二本三本的同学,学起来很费劲,同病相怜嘛,因此把自己的经验share出来,看能不能多帮几位。
第三呢,我也想赚点钱,我娃娃刚出生,想赚点奶粉钱,嘿嘿。
第四呢,我想我不赚黑钱,一本书,只有一两个知识亮点,就买几十,我也觉得不值,因此,书中我尽量给干货。我送过样书给几个同行朋友,他们都说,我的每个章节,都可以拿出来单独写本书,甚至担心我把这么多内容,压缩这么少的字,能不能说清楚。我说,尽量吧,学生娃花点钱不容易,我尽量多给点。能多帮,多帮点,如果内容没写明,不是有读者俱乐部嘛,他们提问,我再来免费解答好了。
第五呢,我自认比较厚道,这本书原来准备定价100左右,我问了学生,很多学生说,只能承受70左右的书价,我就和出版社一压再压,压倒68,网购大约只要4、50左右,我想,作为作者,我能为学生做的,都做了。要知道,书价越低,我能收入的稿酬,就越低的。

综上所述,这里我提个说法,请各位大虾谅解:
这本书有定位的,如果我书中知识你都懂了,建议不要购买,免得白花钱。
第二个,体谅一下我的想法,我想我不是什么十恶不赦之人,到此也不是骗大家钱的,书在书店,钱在你的包包里,你不买,没人抢你钱的。
第三呢,没看过书呢,就请不要批评了,骂,总要骂得有内容,才行吧。
第四呢,说我肖某人如何如何的,也恕我不再回应了,确实看着有点来气,我做点事情,不容易,请大家体谅,真要觉得水平比肖某人高,建议也写一点书出来,我出版社还认识几个编辑,我可以帮你介绍的。
最后,这个帖子是散分贴,不是技术讨论帖,因此,就不多做技术性回应了。很多问题,讨论起来没个头的。我没太多时间。

如何,兄弟?我言尽于此,你看能理解不?