在第三四部分中,主要探讨的是具体的编程开发实践过程中的注意事项,相比一二部分,这些更具体,具体到变量。如果一个编程新手看这边书,从这里入手应该是个不错的选择,因为它贴近实战,能给人最直接的感受。可惜的是,初学编程时我并没有看到这本书。

这里,对变量命名是拒绝随意定义的,非常强调变量表达的含义,作者相信合理的变量命名可以让程序自我注释,读起来很自然,也就不容易犯错。变量一般是需要初始化的,尽管很多语言并不强制这一点,刚开始学编程的时候也容易忘记这一点;控制变量的作用域,全局变量少用;密切注意程序中的指针和动态分配内存,通过它们产生的内存泄露和缓冲区溢出,已经困扰了人们几十年,虽然发表了众多的论文和工具,问题却依然存在。在现在的开发过程中(Lua语言),如果你在某个位置(预定义允许位置外)定义了全局变量,是会给出输出警告的,必须把它修改为局部变量。关于作用域,在python、Lua或者OCaml这样的语言中,允许在函数中定义函数(闭包),这时候产生了所谓的upvalue,是特别要注意的,而且不同的语言中其作用方式是有差异的(python与lua闭包的一点不同),所以请记得深入一种语言去编程。

使用语句的时候书中也讨论了很多方面,就是要让程序可读、易读、美观,为了达到理想的效果,作者也提出了一些方法如表驱动法,通常来说,一条语句至少不能太长不能一口气表达太多的操作或者条件判断,语句间不能嵌套的太深,所有的语句应是在同一个抽象层次上表达操作,注意预期的正常路径和非法路径的安排顺序,避免虽然正确但容易被人误解(主要是还不完全熟悉语言的人,可谁能说自己完全熟悉某语言呢)的表述(如优先级次序问题),对goto的慎重使用(Lua中没有goto也用的挺好)。在实际的工作中发现,其实更多的问题并不是语句本身,而是对问题抽象的把握,该把哪些语句组织在一起成为一个功能函数,确定了这个,变量的命名、语句的编写都会顺利很多。

这两部分的实用性和可操作性都很强,特别适合正在入门的人阅读学习,刚开始的时候习惯容易养成也容易改,接受好的习惯是一个优秀的习惯。这两部分涉及的问题,处理的效果如何将决定系统的最终质量,规划设计的再完美最终要落实到正确可靠的实现上体现,作为最一线的编码人员一定要认真领会。

转载于:https://www.cnblogs.com/njucslzh/archive/2012/12/15/2819701.html

《代码大全》阅读心得二相关推荐

  1. 深入理解Java虚拟机阅读心得(二)

    深入理解Java虚拟机阅读心得(二) 垃圾收集 程序计数器.虚拟机栈.本地方法栈三个区域随线程而生,随线程而灭:这几个区域的内存分配和回收都具备稳定性,不需要过多的考虑回收的问题.而Java堆和方法区 ...

  2. SURF C++代码 详细阅读(二)—— 极值点检测 确定极值点精确位置

    SURF C++代码详细阅读(二) 2.2.3 极值点检测 2.2.4 确定极值点精确位置 2.3 新建自定义Ipoint类获得特征点 阅读(一)进行到了 2.2.2 获取特征点 buildRespo ...

  3. 英语思维导图大全 阅读理解(二十一)

    阅读理解 一.新鲜一感 二. 阅读理解全部内容 一.新鲜一感 一箭西去寒射影,持剑东来斩寒山 二. 阅读理解全部内容 如果订阅后,就可以在最后一篇文章中,找到这个百度网盘链接地址,获取英语思维导图大全 ...

  4. 代码重构阅读心得[转]

    最近阅读Martin Flower的<重构>,对自己有许多启发,以前认为一些正确的观点现在看来也不那么正确了:同时发现对重构的理解只有在阅读了书之后更加彻底:在阅读<重构>之后 ...

  5. 代码大全读后感(二)

    写代码首先要搞清楚面向对象,不是为机器编写代码,更重要的是沟通,人们可以看懂不是自己写的代码的思路.问题,方便修改. 毕竟自己写的代码只要正确机器一般都能看懂识别,但是别人就不一定了,势必考虑异常的出 ...

  6. 代码大全阅读笔记02

    第二部分:创建高质量的代码 第一部分主要介绍了开发过程和需求分析,强调了构建的重要性,可以说十介绍了技术层面的一些东西.第二部分把目光放到了更加细节的地方,也开始看到了一些代码.内容十分全面,也写了很 ...

  7. 代码大全阅读笔记01

    软件开发过程中的不同活动:定义问题.需求分析.规划构造.软件架构(或高层设计).详细设计. 编程与调试.单元调试.集成测试.集成.系统测试.保障测试.构建活动主要是编码与调试,但也有其他 的活动. 构 ...

  8. Soul 网关源码阅读(二)代码初步运行

    Soul 源码阅读(二)代码初步运行 简介     基于上篇:Soul 源码阅读(一) 概览,这部分跑一下Soul网关的示例 过程记录     现在我们可以根据地图,稍微探索一下周边,摸一摸      ...

  9. STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...

最新文章

  1. MongoDB数据库(二:高级操作)
  2. vs2010中release模式下调试程序
  3. Codeforces Round #149 (Div. 2)【AK】
  4. 【转】DICOM:DICOM Print服务中PresentationContext协商之 MetaSOPClass与SOPClass对比分析!!!!!!!!
  5. multipartfile上传文件_Feign文件上传和部分源码解读
  6. Leader:这样的 Bug 你也写的出来???
  7. jQuery 的第一个例子
  8. 安装最新版 MySQL 8.0.30
  9. Activity焦点
  10. STM32Cube IDE环境安装
  11. word压缩图片怎么弄_教大家WORD插入图片如何批量压缩图片
  12. 如何在word编辑文本框,教程来啦,怎样在word编辑文本框
  13. Vocabulary and Phrase in Paper of Computer Vision (Updating)
  14. ad16 导入dwg_AD16怎样精确导入CAD文件
  15. 排序算法系列:归并排序算法
  16. 01Node.js入门+留言本实操
  17. EOJ 3265 七巧板
  18. 苏缇雅专注女士内衣 欲做中国的“维多利亚的秘密”
  19. WinCE Eboot中的BLCOMMON
  20. java语言商场打折_Java封装商场打折策略(Strategy模式)

热门文章

  1. 高级灰rgb数值_插画的高级感,从何而来?
  2. 我的世界JAVA版编程语言_Java版版本记录/开发版本
  3. android 灰色向白色渐变,iPhone-iOS的白色到透明渐变层为灰色
  4. css中的滤镜,CSS中的filter(滤镜)属性
  5. springboot中获得app_Spring Boot 应用程序启动流程分析
  6. 知道圆心半径取圆上的经纬度_作为一名台球高手,你应该知道的事
  7. java bufferedreader类_详解java中的BufferedReader类
  8. 第一个SpringBoot项目——CRUD
  9. 机器学习——数据预处理
  10. ubuntu16.04安装NIVIDIA显卡驱动,cuda8.0,cuDNN6.0以及基于Anaconda安装Tensorflow-GPU