编程匠艺读书笔记2

  1. 错误处理:异常是一种强大的错误报告机制(对返回值的一种补充)。编写的代码的90%是用来处理错误的
      优秀程序员在编写主要代码时同时编写错误处理代码,覆盖了全部的错误可能性

  1. 日志:收集重要跟踪信息,找问题切入点
  2. 报告:人机交互留到真正重要的时刻
  3. 恢复:错误向上传
  4. 每个函数中应该执行的一些错误检查:监察所有的函数参数、关键点处的不变条件是否满足、外部值得有效性、检查所有系统调用和其他下级函数调用的返回状态
  5. 管理错误:
  •   避免可能造成的错误——预留足够的资源避免资源分配错误,保证的内存缓冲池
  •  定义程序在不正常的环境下的预期行为
  • 清晰定义哪个组件负责哪个错误,在模块接口中声明
  • 检查你的编程实践
  • 跟踪一个错误地时候,判断错误来源是这里还是前一个问题的故障现象,如果是后者,不要在这里编写处理代码    

  1. 使用工具构建软件:
      使用工具的方式可以看出你是否能成为一名真正多产的程序员,要紧紧抓住能帮助你编写更好代码、更快更可靠代码的工具

     在大型项目中尝试不同的编程环境下工作,理解什么造就了好的工具链,并帮助你从全局的角度了解软件工具

     尽可能全面了解你的常用工具,为了熟悉这些工具而投入的少许时间会让你很快有所收获
  1.      成为超级工具使用者:清楚手头有那些工具、花时间了解更充分信息、时刻准备试用新的工具、匀出一部分时间磨练实用工具的技巧,就像你会花时间阅读技术书刊。时刻转杯试用新的工具,花时间学习它,这是一种健康的态度。确保你使用的工具就是你所能获得的最好的。
  2.     步骤:
  • 了解它能做什么:查清功能,究竟能做什么,而不是你觉得它应该能做什么  ;明白其局限性
  • 学习如何驾驭它:如何正确使用它,它是如何融入到整个个工具链中的。理解如何驾驭每个工具的功能,并了解它们如何相互操作,会让你的工具使用水平提高一个层次。找出使用每个工具的最好方式,如能自动触发么。
  • 了解它适合什么任务:了解每个工具是如何融入到其他可用工具的环境中的。如编辑词法分析器时,yacc很有用。将合适的工具用到合适的任务上,不要拿着牛刀杀鸡
  • 检查它是否可用:拥有工具的源代码很重要,查出工具到底在做什么,选择工具的一个决定性因素。
  • 找到了解更多信息的途径:认识那些明白的人!!!  工具的文档在哪儿?提供支持的是谁?如何获取更多的信息? 手册、发行说明、在线资源、内部帮助文件、参考指南。
  • 查明新版本何时出现:了解工具的最新信息非常重要,但更新时注意慎重。
  1. 哪个工具:IDE集成的借口当然很方便,但是了解每个工具是如何独立工作的也非常重要,使你明白如何更好利用IDE的每种可用功能,会明白你的IDE缺少哪些有用的功能。大多数IDE是模块化的 ,可以用一个更好的组件替代其中的某个组件。
工具共有5种:
  1. 源代码编辑工具
源代码编辑器:可能是你最重要的工具,甚至比编译器更重要,对你如何编写代码影响更大。
       选择编辑器用起来很舒服且能够完成你的任务, 不要仅仅因为某个编辑器嵌入在你的可视化IDE中,就把这个编辑器当做是最好的
       应具有以下特点: 易于理解的语法着色、简单的语法检查、良好的渐进式搜索工具、键盘宏录制、高度的可配置、可以在我所使用的所有平台上运行。
       根据你的工作性质,你会发现一些其他类型的编辑器,包括二进制文件编辑器、特定文件格式的编辑器如xml文件编辑器。
         vim和emacs是著名的unix编辑器,现已发行了适用于几乎所有平台的版本
      
        源代码处理工具 :diff、sed、grep等
        源代码浏览工具 :帮助自己研究和理解代码、设计代码、轻松执行搜索浏览交叉引用等操作,有些工具生成调用关系树等、这些工具可能会生成一个图形化的流程图,或与你的编辑器集成一起,提供自动执行、函数调用帮助等功能。 LXR、Doxygen、ctags都是很好的免费工具。
版本控制
源代码生成:一些自动生成源代码的工具,如yacc生成器;对于那些会写出大量你必须日后进行修改或者矫正的框架的代码,必须小心对待,使用之前,必须真正理解他们,甚至可以自己编写脚本生成重复的代码段。
源代码美化工具:通过创建一致的“最小共通特性”版面,同意原代码办事,但弊大于利。
  1. 代码构建工具
编译器:除编辑器外,第二个最常用的软件。你是否真的知道它所具有的所有选项和功能。是否明白要优化到什么程度、是否在进行编译时打开了所有的警告、是否遵循标准,如java语言是由gosling et al .00定义的、编译器生成的代码是否符合正确的cpu指令集。
链接器:与编译器紧密相连,获取编译器生成的所有中间对象文件,java语言链接器与运行时环境结合在一起。 是否会剥出二进制、是否会删除重复的代码、是否可以让链接器生成库对象而不是可执行程序?
        构建环境:学会如何最有效的利用集成构建环境,但是不要因此而不了解如何使用每个单独的构建工具。
测试工具链:测试工具是代码构建工具而不是调试工具。一边编写代码一边测试。一些工具自动帮你执行单元测试,提供一个框架,将代码放入测试代码,有些工具可以生成测试数据和创建测试用例,还有些工具可以模拟目标平台,甚至包括模拟如内存不足、负载过高。
  1. 调试和调查工具
调试器:拥有一个高质量的调试器并了解如何使用它,可以为你节省大量用于追查意外行为的开发时间。gdb是GNU的开放源码调试器,已经被一直到几乎所有平台。ddd是gdb的一个功能丰富的图形接口,所有IDE和工具链都有其自己的调试器。
分析器:如果代码运行过慢,分析器分析代码各部分运行时间找出瓶颈,进行优化。
代码校验器:静态(现以内置在现代编译器中,检察源文件等)和动态(内存分配、边界检查器等)
度量工具:静态分析器,进行质量统计,如圈复杂度
反汇编程序:深入到可执行文件中,检查程序的机器代码,高级的反汇编程序生成以高级语言表示的二进制文件的重新解释
缺陷跟踪:提供共享数据库,包含在你的系统中找到的bug的跟踪记录。
  1. 语言支持工具
编程语言
运行时和解释程序:java 的jvm是一种常见的语言解释程序。
组件和库
  1. 其他工具
文档工具
项目管理工具


优秀的程序员:
  •     愿意一次学会如何使用一种适当的工具,而不愿不断重复执行一项单调乏味的工作
  • 了解不同的工具链模型,并且用起来每个都感觉很舒服
  • 使用工具以使他们的生活更简单,但不会成为工具的奴隶
  • 很有效率,因为他们对工具的使用是第二天性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值