`

思考,调试 你选择哪个?

阅读更多

看到标题,也许你已经知道我的主题是什么了,不错,我的主题就是写代码。从踏上编程这条路开始,二年或是三年我们就一直与关键字与自定义数据为伍,我们的大多数时间用来编码,用来完成任务,结束项目。 这是一个美妙的过程,在这个过程中挑战极限,充分享受代码带来的痛苦和乐趣。我对编码的的定义就是在痛苦中寻找乐趣。可话说回来,在这个寻找的过程中我们又进入了另一种痛苦。这就像我们在沙漠中寻找绿洲一样,寻找的过程本身就是一种痛苦。 我对编码更明确的定义就是在痛苦中通过痛苦的寻找过程得到乐趣。 如此想来,那寻找的一丝乐趣也没有意思了。 我对编码更准确的定义就是在痛苦中通过痛苦的寻找过程得到还不如痛苦的乐趣,精华是没事找抽。所以编码就是没事找抽。 程序员就是没事找抽的角儿。

为什么会有这么变态的结论?我想这就是我这篇文章要与大家讨论的问题。在此我想问大家,假设我们这一天的任务就是要写代码,那么你会用多长的时间来调试?这个问题很重要。又用了多长时间来思考如何编码?这个问题也很重要。

这里有一个数据,我没有考证来源,只供参考。大多数程序员,无论他的水平如何,其平均每天只有10-12行的代码最终会进入最终的软件产品中。有的程序员为了得到这10-12行代码花费90%的时间来调试程序。有的程序员为了这10-12行代码花费90%的时间来思考,调查,研究最佳的设计。从表面上看,这两种程序员是在相同的时间内得到同样多的代码。但是他们完成代码的心情和质量却是不一样的。前者随意地改动代码并尝试让代码工作起来,一直处在痛苦边缘。所以有把时间多分配给思考,而不是调试。

好,思考是好事,但是思考什么才是最有效的?

我不要浆糊和烂泥,要的都是精华!

一方面要问这样写对不对,有没有更好的方法?另一方面在编程过程中要做到复用。使用已有的东西是一件简单的事情,所以在请尽量使用已经存在了的解决方案来解决问题,把握对通用的模式的识别和重用。好,我们通过重用思考把代码给写出来了,那么结束了吗?还没有!能过下一步思考我们可能要重构/重写自己的代码。我觉得还是重用思考。但不是重用已有代码,而是我们的代码是否有重用性。

我认为这样会让我在编码过程中尽量避开调试,节省时间,更重要的是减少痛苦。

分享到:
评论

相关推荐

    像计算机科学家一样思考Python(第2版).pdf

    贯穿全书的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。 全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念开始讲起,包括语言的语法和语义,...

    串口助手,串口调试工具

    很好用的串口调试助手,支持,COM 口接收数据,支持 TCP UDP接收数据调试,支持文件发送,支持自动发送数据,支持波特率设定,和指定不同串口号

    互联网程序员都每天刷题嘛-bug-squishing:Ruby新程序员对问题分解与调试的一些思考

    关于问题分解和调试的一些思考。 介绍 问题分解和调试是每个开发人员从初学者到专业人士所需要的技能。 当与阅读和实施文档的能力相结合时,这些技能形成了将开发人员与外行分开的基本能力,而且它们通常只是人们...

    C++实训教程(冯矢勇) Part1共2个文件

    1.5 思考与练习 第2章 C++基础 第3章 面向对象程序设计实训 第二篇 程序设计 第4章 设计技术 第5章 类的设计和使用 第6章 深入介绍程序设计技术 第7章 流的应用 第三篇 调试与Windows应用 第8章 调试...

    C++实训教程(冯矢勇) Part2共2个文件

    1.5 思考与练习 第2章 C++基础 第3章 面向对象程序设计实训 第二篇 程序设计 第4章 设计技术 第5章 类的设计和使用 第6章 深入介绍程序设计技术 第7章 流的应用 第三篇 调试与Windows应用 第8章 调试...

    leetcode2-algorithm:数据结构与算法的学习与思考

    ,不要看见算法题就觉得很难,不去想,然后通过搜索来得到答案,可是你应该明白,在如今这个互联网时代,资料随处可得,重要的是你面对问题的时候是否可以真正分析,调试,解决它。 第二个思考是通过你所具备的知识...

    计算机网络课程设计任务书(计算机,软件)

    5)课设总结:总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对计算机网络这门课程的思考、在课程设计过程中对《计算机网络》课程的认识等内容。

    单片机课程设计报告—简易计算器1.doc.doc

    2.1键盘电路设计 2.2显示电路设计 3、系统工作流程及流程图 4、系统功能测试与整体指标 4.1 软件调试步骤 4.2 程序调试步骤 4.3 测试结果 5 总结与思考及致谢 附录一 主程序 简易计算器 设计要求 3*4键盘输入,...

    DSP接口电路设计与编程

     7.4 选择合适的调试平台  7.4.1 安装仿真器驱动软件  7.4.2 选择调试平台  7.4.3 多处理器调试  7.5 程序调试操作  7.6 程序性能分析操作  7.6.1 Trace操作  7.6.2 Profile操作  7.6.3 Statisca Profiling...

    时钟程序 课程设计真的好用

    通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、...

    java实用应用教程

    实用教程一般在讲解内容后紧跟实例,并且实例程序一般均上机调试通过,实验部分通过实例先一步一步引导读者进行操作,然后提出问题让读者思考和在原来基础上自己进行操作和编程练习;实习部分是综合训练实际解决问题的...

    分支程序设计实验.doc

    《单片机实验》报告 实验名称 分支程序设计实验 指导教师 刘冬生 专业班级 ... 思考题: 1.实现多分支结构程序的主要方法有哪些?举例说明。 2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十

    分支程序的设计实验.doc

    《单片机实验》报告 实验名称 分支程序设计实验 指导教师 冬生 ... 思考题: 1.实现多分支结构程序的主要方法有哪些?举例说明。 2.在编程上,十进制加1计数器与十六进制加1计数器的区别是什么?怎样用十进制 加法

    perl语言脚本文档说明

    6.2.5 分组和选择 69 6.2.6 位置通配符 69 6.3 替换 70 6.4 练习:清除输入数据 70 6.5 关于模式匹配的其他问题 71 6.5.1 对其他变量进行操作 71 6.5.2 修饰符与多次匹配 72 6.5.3 反向引用 73 6.5.4 一个新...

    stack-kit:具有ISPConfig 3和uWSGI的服务器调试实用程序

    更多的主机控制面板计划在将来的版本中,尽管是一个小的限制为你做了这些早期版本的后端堆栈的选择, Stack Kit能够通过建造房屋,你可能需要许多非常有能力的环境,并且都包含了最新的前沿技术。 选择后端技术...

    perl学习文档

    6.2.5 分组和选择 69 6.2.6 位置通配符 69 6.3 替换 70 6.4 练习:清除输入数据 70 6.5 关于模式匹配的其他问题 71 6.5.1 对其他变量进行操作 71 6.5.2 修饰符与多次匹配 72 6.5.3 反向引用 73 6.5.4 一个新函数:...

    24日学好Perl语言

    6.2.5 分组和选择 69 6.2.6 位置通配符 69 6.3 替换 70 6.4 练习:清除输入数据 70 6.5 关于模式匹配的其他问题 71 6.5.1 对其他变量进行操作 71 6.5.2 修饰符与多次匹配 72 6.5.3 反向引用 73 6.5.4 一个新函数:...

    PERL编程24学时教程.pdf

    6.2.5 分组和选择 69 6.2.6 位置通配符 69 6.3 替换 70 6.4 练习:清除输入数据 70 6.5 关于模式匹配的其他问题 71 6.5.1 对其他变量进行操作 71 6.5.2 修饰符与多次匹配 72 6.5.3 反向引用 73 6.5.4 一个新函数:...

    PERL编程24学时教程

    6.2.5 分组和选择 69 6.2.6 位置通配符 69 6.3 替换 70 6.4 练习:清除输入数据 70 6.5 关于模式匹配的其他问题 71 6.5.1 对其他变量进行操作 71 6.5.2 修饰符与多次匹配 72 6.5.3 反向引用 73 6.5.4 一个新函数:...

Global site tag (gtag.js) - Google Analytics