思维惯性引发的编程问题

简介: 为什么程序要了解思维的障碍,并要练习有意识的加以克服?这里举一个实际发生的问题。 写代码像写作一样,有时思如泉涌,顺着思路就把一段代码写得有模有样。
为什么程序要了解思维的障碍,并要练习有意识的加以克服?这里举一个实际发生的问题。

写代码像写作一样,有时思如泉涌,顺着思路就把一段代码写得有模有样。

下面是一个状态码检查的例子(这种写法本身并不严谨,但这里要讨论是一个更为严重的问题.):

typedef enum {   STATE_DEFAULT,   STATE_A = 1,   STATE_B = 2,   STATE_C = 4} STATE_ITEM;

// state为获得的状态
 if (STATE_A & state)
 {
 }
 else if (STATE_B & state)
 {
 }
 else if (STATE_C & state)
 {
 }

这样很自然就有了一个模型STATE & state就可以判断是不是当前这个状态。 顺着前面的思路,就有了:
 if (STATE_DEFAULT & state)
 {
   ...
 }

一切看起来都合情合理,程序员这时往往是很难会想到要回头检查的(至少我是这样)。于是一个Bug就在不久之后被发现了! 因为 STATE_DEFAULT & state永远为0!

而解决方案有两个: 1.将设计用图形化的先表现出来,即使只是在纸上画一下。2.代码走查,特别注意边界条件,可以是自己回头查一下,也可以类似结对编程一样,请同伴帮助走查。但最起码的是,程序员要意识到这种问题的存在。这就是本文的目的。

转载请注明出处: http://blog.csdn.net/horkychen



目录
相关文章
|
1月前
|
程序员 开发者
代码与禅意:寻找编程中的内在和谐
【4月更文挑战第8天】 在数字世界的纷繁复杂中,编程不仅仅是一项技能,更是一种艺术。本文探讨了编程与禅宗哲学之间的深层联系,阐述了如何在技术的冰冷逻辑中寻找到心灵的温暖和内在的和谐。通过反思编程过程中的创造力、专注力和简洁性,我们能够揭示出技术实践与精神修养之间的桥梁。
|
9月前
量子力学与哲学的交叉:现实性,自由意志和意识
量子力学与哲学的交叉点是一个复杂而深刻的领域。许多哲学问题在量子力学的探索中得到了新的视角和解释。现实性问题挑战着我们对物体性质的理解,自由意志问题引发了我们对决策和行动的思考,而意识问题则涉及我们对观测和存在的认识。
63 2
量子力学与哲学的交叉:现实性,自由意志和意识
|
12月前
发散性思维(一)——通过变通和联想来解决问题
发散性思维(一)——通过变通和联想来解决问题
73 0
发散性思维(一)——通过变通和联想来解决问题
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
扩散模型背后数学太难了,啃不动?谷歌用统一视角讲明白了
扩散模型背后数学太难了,啃不动?谷歌用统一视角讲明白了
192 0
|
数据采集 SQL 安全
分享16个我总结的思维模型(程序员必读,受用终身)
分享16个我总结的思维模型(程序员必读,受用终身)
131 0
|
小程序 JavaScript 前端开发
兴趣编程六步法
欢迎来到我的小院,在当今时代,科技力量代表一个国家的核心竞争力,其中计算机编程技术尤为重要,可以从中学习逻辑分析能力,业务抽象能力,专注思考能力等等,美国等一些发达国家,已经把编程教育纳入小学课本中,所以我们也需要加快步伐,掌握编程的一些理念和实战技巧。
兴趣编程六步法
|
NoSQL C# Redis
面试发散思维
今天是个不顺畅的一天! 早上出门时,公交做错了,半途转了另外一个去公司的公交,结果还是反方向的,等我发现这个问题时,感觉再去上班时间很晚了,于是决定请个假约了个面试。 每年抽空面试个两三家,我觉得是有必要的,提升下认知,补充下缺点。
1091 0
《黑匣子思维》读后感
    最近花了大约两个星期的时间零零散散的阅读了一本叫作黑匣子思维的书,书的观点比较明确且归功于翻译者的水平,整本书看起来还算比较轻松的,按照正常的阅读速度我估计一个周末就可以阅读完了。
1361 0

相关实验场景

更多