发现一隐藏多年的Bug
C语言程序员在平时工作中,到底如何获取成就感呢?我几乎可以肯定的是:找到一个隐藏已久,多年无人发现的大Bug肯定可以归属到C程序员成就感的范畴中。与操作系统斗、与编译器斗、与内存斗,其乐无穷吗^_^。 ...
C语言程序员在平时工作中,到底如何获取成就感呢?我几乎可以肯定的是:找到一个隐藏已久,多年无人发现的大Bug肯定可以归属到C程序员成就感的范畴中。与操作系统斗、与编译器斗、与内存斗,其乐无穷吗^_^。 ...
这周我在两个会议场合听到“架构师”这个词。对于软件开发领域的人来说,“架构师"这三个字并不陌生,甚至很崇高。每当提到架构师的时候,大家眼睛都会放出羡慕和期待的光芒,因为众所周知的原因:“架构师"对于搞技术的人来说,都是"大牛"的代名词。 ...
Pair Programming, 结对编程是敏捷开发中一个重要的实践,并受到很多业界大师级人物的推崇。但是明知它对我们可能会很有帮助,但是如果推广、实践起来还是要突破各种束缚的,心理上的、流程规范上的等等。我想也许这也或多或少也和公司或者部门的开发文化有些关系。我很想去尝试,但是一直没有找到一个很好的机会,也没有找到"心仪"的Partner。 ...
我所在的项目一直以C语言作为主要开发语言,与做Java以及其他新兴语言的人不同,组内的同事似乎对新鲜的东西不是那么感兴趣,也没有主动去研究新鲜事物的意愿和意识。我深为此闹心,看到外面世界中那么多美妙的工具,再也不能坐以待毙了。我一直都是有很多想法的,但是迫于自身精力有限,自己无法全身投入,以前都是交予别人去做的,但是收到的效果都不是很好。认识到这点后,我决定自己动手,丰衣足食。 ...
每年都有应届毕业生来到公司,每年都要对新同事进行代码方面的培训,比如编码规范就是其中之一。编码规范初听起来比较新鲜,但是培训时间长了,显然有些乏味。今年我打算改变策略,让新同事结合已有规范文档和项目代码,自己先挖掘一遍,然后大家通过坐下来讨论的互动方式来加深对规范的理解,每次讨论时间限制在1 hour以内,不给大家打瞌睡的机会^_^。 ...
CHECKLIST多是类似如下的东西,举一个代码CHECKLIST的例子: 参数的书写是否完整?不要贪图省事只写参数的类型而省略参数名字。 - 参数命名、顺序是否合理? - 参数的个数是否太多? - 是否使用类型和数目不确定的参数? - 是否省略了函数返回值的类型? - 函数名字与返回值类型在语义上是否冲突? 我们常常遇到的一个问题就是在进行source peer review的时候是根据每一个CHECK item去从头到尾看一遍代码(如果有50个CHECK items的话,那就从头到尾看50遍代码)还是记住所有CHECK items,然后只看一遍代码,显然我觉得后者在目前实施的可能性是最大的,也是实施最普遍的。 ...
刚搬家,由于新的小区不在中国铁通的势力范围之内,所以无奈下只好硬着头皮去安装网通宽带,与铁通宽带不同的是网通宽带套餐必须绑定一部固话,估计这就是固网电信运营商开拓市场的一个卑鄙伎俩吧。铁通就可以不安装电话,直接通过跳线做。还有更严重的一点就是网通宽带贵,包一年比铁通要贵上300块;另外已经习惯了铁通的免费电影网站,网通的收费电影网站让我很是不适应。我又不喜欢用bt,以后看电影还是需要另寻门路了。 ...
assert是大家常用的宏,它的用法相信大家都有所了解。P.J Plauger的"The C Standard Library"一书中提到在源代码中切换assert宏定义的方法: /* turn assertion on */ #undef NDEBUG #include ...
P.J Plauger的"The Standard C Library"一书的Chapter0的章后练习中有这样的一道题:编写一个包含如下一行语句的正确的程序: x: ((struct x*)x)->x=x(5); 并描述这行语句中x的5种截然不同的use,这里其实涉及到这么一个知识或者说概念:C语言的命名空间(namespace),在"C语言参考手册"中还被称作: overloading class。 ...
很多技术人员都有在"技术细节"上"钻牛角尖"的"癖好",对此很多人褒贬不一;无论怎样,我也是属于这类人。C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是如何实现的呢?这里我们一起来挖掘一下C语言变长参数的奥秘。 ...