【读书笔记】代码大全34章:软件工艺主题

来源:互联网 发布:京都特色民宿酒店知乎 编辑:程序博客网 时间:2024/04/30 07:39
这本书大部分讲的都是软件开发的细节,本章节讲的主要是从宏观角度讲解软件工艺。

  • 控制复杂度
    • 软件开发的精髓就是控制复杂度
    • 降低复杂度的方法
      • 将系统拆分成子系统
      • 精心设计接口,尽量隐藏设计细节
      • 避免使用全局变量
      • 避免深度继承
      • 避免goto
      • 整个项目使用同一种错误处理方法
      • 统一Exception的使用方法
      • 不要把类设计得太复杂
      • 保持函数的短小
      • 使用良好的变量名
      • 减少函数的参数
      • 使用现成的编码规范,这样可以降低复杂度
    • 编码规范的作用就是降低复杂度
    • 抽象可以降低复杂度
    • 根据作用命名变量
    • 总之,软件设计的核心就是控制复杂度
  • 软件工程过程
    • 软件工程的过程很大程度上影响了最终产品
    • 开发软件的时候要关注软件工程方面大大小小的过程,这方面是值得花时间的
    • 软件开发是一种不断创新的过程
  • 写代码给人看,顺便给机器运行
    • 代码可读性的好处
      • 可以被别人理解
      • 可以进行代码审查
      • 可以减少错误率
      • 可以方便调试
      • 可以方便修改
      • 可以减少开发时间
      • 从而增强软件的外部质量(用户能感觉到的软件质量)
    • 写出可以读的代码和不可读的代码花费的时间基本上是一样的
    • 就算代码写出来是给自己用的,也不能忽略代码的可读性
  • 不是用语言来编程,而是用编程来丰富语言
    • 有些语言不支持assert,可以写一个assert函数
    • 有些语言不支持常量,可以用大写的变量来代替
  • 注重编码规范,这样可以把注意力集中在问题本身
    • 编码规范包括:缩进、空格、命名规范等
    • 编码规范包含了重要的信息
    • 编码规范防止了错误的发生
    • 编码规范让底层的功能更加明显,你不需要猜测
    • 编码规范可以弥补编程语言的缺陷
  • 编码的时候注意问题本身,而不是实现细节
    • 把问题分解成几个层次
      • Level-0:操作系统级别的操作,机器码
      • Level-1:语言方面的,比如基本数据类型,控制结构等。一般人不会接触Level-0和Level-1
      • Level-2:底层结构实现,算法/数据结构
      • Level-3:底层方案实现,解决项目中的基本问题
      • Level-4:高层方案实现,这个层次的代码应该能让不懂技术的人看懂
    • 另外一种方法
      • 编写一个类解决项目相关的问题
      • 隐藏底层的数据细节
      • 使用有意义的命名常量
      • 加入中间变量,让计算过程易于理解
      • 复杂的条件代码可以用函数代替
  • 小心落石
    • 如果一段代码调试了很长时间,意味着程序员写代码的时候不机智
    • 如果项目中的代码很多地方是重复的,修改一个地方往往要修改另一个地方,意味着代码不够好
    • 不要小看编译警告
  • 迭代、重复、一次又一次
    • 软件设计是一个启发式的过程,不是决定性的过程
    • 代码调优用到了迭代
    • 代码审查用到了迭代
  • 信念
    • 软件先知:多多尝试新方法
    • 折中:软件开发的过程中要考虑各种方法,没有一种通用的方法
    • 试验:软件开发过程中要使用多种方法,选择最合适的方法
0 0
原创粉丝点击