如何编写更少bug的程序?  尽可能避免常见的程序错误。
 
           沟通设计先行 + 编写可复用代码 + 做得更多 + 做的更少 + 创造“编程心流”+ 严格的程序测试
 
 
       一、 沟通设计先行
       为避免需求或业务逻辑理解的不完全或偏差,  或者设计上存在较大的缺陷, 导致后期不必要的返工, 耗费宝贵的时间和精力, 编程开发遵循的首要准则是沟通设计先行: 与需求方、业务方和工作伙伴多多沟通交流, 进行设计评审, 能够有效地减少因为需求、业务理解偏差导致的逻辑错误和个人经验不足导致的设计错误。 编程与交流活动的适当调节, 也非常有益于延长程序员的寿命。
       
       软件工程师应下决心下功夫锻炼和提升自己的表达能力与语言沟通素养。 
 
 
         二、 尽可能复用 。 
        编写和测试可复用代码, 尽可能复用经过严格测试的可靠公共库。  代码复用、组件复用、框架复用、 接口规范复用、设计模式复用、开发架构复用、  甚至应用模板复用; 复用使得可以从 40% , 甚至 60% 快速起步, 而不是从 0% 开始。工作量的压力小了, 很大程度上会消减因为进度压力导致的代码质量低下的问题。
 
        创建一个应用工程模板, 将你在实际工作项目中所学习到的、所探索到的和所创造的重要知识、技术和经验聚合到这个系统, 让它成为你工作中的百宝箱。  
 
 
         三、 做的更多。 
        之前对参数校验、前置条件、 结果校验是不是做得不充分, 补上吧!  之前对错误和异常考虑是不是不够周全, 补上吧 ! 之前的单元测试、 接口测试是不是基本没怎么做, 补上吧! 
 
        哇! 也许你会说, 工作量增大了好多! 有时间去做这么多工作吗?  这就要应用到第三条法则: 做得更少。
 
 
          四、  做得更少。 
 
        “做得更少”有三层含义: 
      
        (1)  尽可能自动化, 减少手工操作, 凡是操作不方便的、信息需要记忆的, 就要集成到程序中自动化完成, 避免不必要的脑力消耗; 比如查看日志排查问题, 《使用getopt解析命令行一例》, 就编写了一个脚本, 能够获取所有应用服务器的日志并按照内容关键字进行筛选展示, 而不需要手动逐个登陆应用服务器去查看日志了, 也不需要记忆日志地址, 做到最简化, 还学到了新技能。 脑力应该思考最重要的事情, 尤其是判断和决策相关;
       
        (2)  要尽可能创造新的技术和方法, 将耗时繁琐的工作变成轻松的工作;  比如编写单元测试是比较“没技术含量”的事情, 能不能编写程序自动化生成可执行的测试用例呢?  这不就转换成“很有技术含量”的事情了。 《Jtester+unitils+testng:DAO单元测试文件模板自动生成》 展示了一个例子。
 
        (3)  Write Less and Do More. 《编程语言与可复用性》展示了 Python 是如何用一行代码来解决一个可复用性很强的小功能的。 日常编程中, 也应多思, 提炼出问题的核心概念及交互, 用更少的代码实现更多的功能。这是软件开发中最具创造力的地方。
 
         所有繁琐的、没有“技术含量”的活, 都可以转化成非常需要创造力的、富有“技术含量”的挑战。 取决于做事思路的转换。
 
 
       五、 创造“编程心流”。 
 
         “心流”是做一件事非常流畅自如且非常享受的状态。 当处于“心流”状态时:
 
           (1)  感觉时间过得很快, 不知不觉;
           (2)  全身心投入, 热情创造;
           (3)  专注、娴熟自如地做事;
           (4)  如果有些事情不懂, 会努力去学会它。
 
 
       六、 严格的程序测试
        
          严格的程序测试可以找出很多常见的编程错误, 应充分信任程序测试的作用, 充分而严格地测试程序。
          通过严格的程序测试, 将使编写代码的信心大增, 能够更大胆地重构, 尝试新技术, 拓展新领域。
            
 

编写更少bug的程序的六条准则的更多相关文章

  1. Java编写高质量代码改善程序的151个建议

    第一章  Java开发中通用的方法和准则 建议1:不要在常量和变量中出现易混淆的字母: (i.l.1:o.0等). 建议2:莫让常量蜕变成变量: (代码运行工程中不要改变常量值). 建议3:三元操作符 ...

  2. redux-amrc:用更少的代码发起异步 action

    很多人说 Redux 代码多,开发效率低.其实 Redux 是可以灵活使用以及拓展的,经过充分定制的 Redux 其实写不了几行代码.今天先介绍一个很好用的 Redux 拓展-- redux-amrc ...

  3. 编写更少量的代码:使用apache commons工具类库

    Commons-configuration   Commons-FileUpload   Commons DbUtils   Commons BeanUtils  Commons CLI  Commo ...

  4. 编写出色的GNU/Linux程序

    http://advancedlinuxprogramming.com提供了本书电子版的免费下载. 1 与执行环境交互 关于参数 C语言程序的main()函数使用两个参数和执行环境交互--(int)a ...

  5. VC++编写简单串口上位机程序

    VC++编写简单串口上位机程序   转载: http://blog.sina.com.cn/s/articlelist_1809084904_0_1.html VC++编写简单串口上位机程序 串口通信 ...

  6. 内核futex的BUG导致程序hang死问题排查

    https://mp.weixin.qq.com/s/sGS-Kw18sDnGEMfQrbPbVw 内核futex的BUG导致程序hang死问题排查 原创: 王领先 58架构师 今天   近日,Had ...

  7. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  8. 使用PyQt来编写第一个Python GUI程序

    原文:使用PyQt来编写第一个Python GUI程序 本文由 伯乐在线 - Lane 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:pythonforengineers.com.欢迎加 ...

  9. 如何编写更好的SQL查询:终极指南-第一部分

    结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这 ...

随机推荐

  1. 用css实现云状提示框

    经常会用到云状提示框,如图: 基本框架是这样,以三角在左侧为例: <div class="container"> <div class="content ...

  2. 给ul中的li添加事件的多种方法

    给ul中的li添加事件的多种方法 这是一个常见,而且典型的前端面试题 <ul> <li>11111</li> <li>22222</li> ...

  3. JS实现动画原理一(闭包方式)

    前提:      你必须了解js的闭包(否则你看不懂滴)     我们就来做一个js实现jq animate的动画效果来简单探索一下,js动画实现的简单原理: html代码 <div id=&q ...

  4. http://blog.csdn.net/jiyiqinlovexx/article/details/38326865

    http://blog.csdn.net/jiyiqinlovexx/article/details/38326865

  5. 移动端公共css样式

    @media screen and ( min-width: 319px){html{ font-size: 100px;}}@media screen and ( min-width: 359px) ...

  6. HTML5所有标签汇总按功能

    基础 格式 表单 框架 图像 音频/视频 链接 列表 表格 样式/节 元信息 编程1. 基础(9个)<!DOCTYPE><html><title><body& ...

  7. linux多个python版本下导致yum报错

    问题: $ yum File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid ...

  8. MySQLdb模块操作

    Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get install python-mysqldb Windows ...

  9. 线性空间光照(即Gamma)

    在渲染管线中正确使用Gamma校正是决定渲染效果的一个非常重要的因素,现在商业引擎包括很多国内引擎都已经是在线性空间计算光照.当然也包括我们之前公司设计的引擎.关于gamma校正的定义可以查看wiki ...

  10. SQL查询一个表的总记录数的方法

    一.简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ...