公司来了几个新手,有时候很简单的一个功能模块都要耗费好几天时间,总是在一些不相关的问题上死耗一整天,搞出莫名其妙的问题,找不到具体原因,总是怀疑编译出问题了,系统出问题了,板子出问题了,搞到快下班了叫我帮他们看看。

我总跟他们说,不要轻易怀疑系统,先去检查自己的“所作所为“,虽然系统也会有出错的时候,但是你永远要相信你自己出错的概率远大于系统,99.9%的时候都是你自己出了问题。

首先,静态检查自己所写的每一行代码是有必要的,虽然有时候编译通过并不代表程序没有问题,只能说明语法上通过了,但是是否真实按照自己的设计意图编写的,却很难说。

编程习惯不好,很容易在匆忙大意的时候改变了程序的设计逻辑,但是编译却能正常通过,自己却还不知不觉。

举两个编程习惯的例子供参考。

一、运算符与字符之间最好保留空格。

如下对比

int a=2;
int b=3; int c = 4;
int d = 5;

 可以明显看的出来,后面两行会更加舒适美观,但这不是我要说的重点,重点时候有时候这可以规避一些问题。

再看下面的代码块

/* no space */
int comp_var(int *b)
{
  int a=4;   if (NULL==b)
    return a;
  else
    return a/*b;
}

  

上面这部分代码编译时无法通过,设计者原本意图是想计算a 除以 b指针的值,但是/*b 会被编译器解析成/* 表示注释开始,b属于注释内容,还会一直寻找最后的*/注释结束符。

加上空格之后就消除了这种歧义。

/* with space */
int comp_var(int *b)
{
  int a = 4;   if(NULL == b) {
    return a;
  } else {
    return a / *b;
  }
}

  

二、变量与常量进行==比较时,最好把常量写前面,变量写后面。

这种做法在一不小心将==写成了=号时,编译器能及时发现错误并告知我们,否则,编译器直接编译通过,但是当你运行程序的时候结果总是带给你“惊喜”。

int comp_var(int a)
{
  int b = 4;   /* if(a == 3) */
  if(a = 3)
    return b;
  else
    return a;
}

  

程序设计者本意是想比较a 和 3是否相等,但是误写成了赋值,编译器能正常编译通过看,但是程序执行时 if 条件永真,永远返回b的值4。

如果将常量写在前面,则编译器在编译时便会报错提醒,开发者可以随时纠正。

int comp_var(int a)
{
  int b = 4;   /* if(3 == a) */
  if(3 = a)
    return b;
  else
    return a;
}

  

 

好的编程习惯是减少bug最有效的方法的更多相关文章

  1. 程序员减少代码BUG的7种方法,拒绝编程5分钟,查代码2小时!

    0.别对警告视而不见 相信不少的程序员会使用IDEA,使用它敲代码,有时候会出现警告,那么这时你对警告就不能视而不见了. 我们的目标是,写干净的代码,做风一样的男子! 1.编程习惯 种瓜得瓜种豆得豆, ...

  2. iOS高效编程秘诀—坚持编程习惯

    资料源于网络 习惯会影响一个人做事的方式,也会直接影响效率.我经常在项目完成后自我总结,有哪些做得好的,有哪些做得不好的?然后把一些好的流程记录下来,并且重新运用回编程中.那些能够坚持去做的流程,就变 ...

  3. 我的iOS高效编程秘诀—坚持编程习惯

    http://www.cocoachina.com/programmer/20150819/13103.html 作者:sunljz 授权本站转载. 习惯会影响一个人做事的方式,也会直接影响效率.我经 ...

  4. 提高万恶的KPI,切忌要避开这六个低效的编程习惯

    作者:程序员小跃 Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习 上次的翻译,引起了很大的反响,大家都想知道自己和高级工程师的差距,看了我的文章,是不是都在默默地做着比较呢?如果 ...

  5. C 语言编程习惯总结

    笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 引言 编程习惯的培养需要的是一个长期的过程,需要不断地总结,积累,并且我们需要从意识上认识其重要性,一个良好的编 ...

  6. 关于减少BUG的思考

    开发之前,就要先设计,理清好思路:如果需求都不清楚,软件肯定有缺陷: 和客户.测试的沟通 如果开发出来的东西本身就有BUG,交给测试,会浪费很多人的时间. 开发做完一个功能后,要自己做一遍测试 自己的 ...

  7. 养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨

    Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1. 使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中 ...

  8. java的编程习惯影响程序性能

    在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身. 养成良好的编程习惯非常重要,能够显著地提升程序性能. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...

  9. js代码之编程习惯

    编程习惯: 异常处理 如果你没有使用异常处理的习惯,这可能是因为你并未真正的理解它的作用.当你正确使用异常处理之后,你会发现你的代码最显著的变化就是:少了很多的 if-else 语句 . 虽然在 JS ...

随机推荐

  1. 样式和模板快速入门Style,Template

    http://www.cnblogs.com/jv9/archive/2010/04/14/1711520.html 样式(Style)和模板(Template)的定义 在Silverlight中,样 ...

  2. Apollo 配置中心详细教程

    一.简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...

  3. Git - 命令行 常用

    一.合并其他分支的commit(A分支中的commit合并至B分支) 切换到A分支,查询commit历史命令行 : $ git log 复制要合并的commit id (如:663802dfb121e ...

  4. 最小生成树-普利姆(Prim)算法

    最小生成树-普利姆(Prim)算法 最小生成树 概念:将给出的所有点连接起来(即从一个点可到任意一个点),且连接路径之和最小的图叫最小生成树.最小生成树属于一种树形结构(树形结构是一种特殊的图),或者 ...

  5. PTA 面向对象程序设计6-2 统计数字

    对于给定的一个字符串,统计其中数字字符出现的次数. 类和函数接口定义: 设计一个类Solution,其中包含一个成员函数count_digits,其功能是统计传入的string类型参数中数字字符的个数 ...

  6. HTML+CSS登录界面,有数据库的登录验证

    HTML 1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 <head> 4 <meta charset ...

  7. 使用ELK监控Nginx日志实现接口流量访问统计

    前段时间自己看书学习了一下elasticSearch,后面自己实践了使用elasticSearch.logStash.kibana搭建一个网站接口流量访问统计的监控看板.在这里做一些记录学习. 先看一 ...

  8. IDEA - 2019中文版安装教程

    前言 个人安装备忘录 软件简介 IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持. ...

  9. django安装xadmin

    环境:pycharm  django1.11.20  python2.7(根据网络上的资料,自己整理实现) 下载:https://github.com/sshwsfc/xadmin/tree/mast ...

  10. base64原理,使用场景

    Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...