【读书笔记】--代码整洁之道2

第五章 格式

纵向格式:
1. 函数与函数之间留空行。
2.变量声明:变量声明应该尽可能靠近其使用位置。因为函数很短,本地变量应该在函数的顶部出现。
3.实体变量 应该在内的顶部,相当于我们的field 字段,会被使用的多。
4.相关函数,如果某个函数调用另外一个,就应该把他们放在一起,而且调用者应该尽可能放在被调用者的上面。这样这个程序就会自然有序。(之前我喜欢把private的方法 放到一起。当然这确实没有什么实际的意义)
5.“相关概念的代码放在一起。相关性越强,比如一个大功能逻辑靠在一起。” (更多的时候我喜欢用 region 来收起来。)
 横向格式:

1.一行的长度,作者建议是上限是120个字符

PS 平时我们都是按照自己的屏幕大小来决定,当然太长了,自己也不便阅读,又不是压缩的js文件

2.赋值语句两端留空。
a = b ; 
3.不在函数名和左括号间加空格。因为函数与其参数密切相关。
4.缩进。源文件是一种继承结构,而不是一种大纲结构,继承结构中的每一层级都圈出一个范围, 也就是代码块,其中有声明语句和执行语句。要体现这种继承结构,就要对源代码进行缩进处理。但有时候我们会把if语句,while循环,或小函数写成一行,但这样没有层级的概念,不便阅读,还是缩进的好。

第六章 对象和数据结构

1.过程式代码(函数编程)便于在不改动既有数据结构的前提下添加新函数,面向对象代码便于在不改动既有函数的前提下添加新类。反过来讲也说的通,过程式代码难以添加新的数据结构,因为必须修改所有函数,面向对象代码难以添加新函数,因为必须修改所有类。所以在设计的时候要分析好是以后是要添加新函数还是要添加新的数据结构。

2.德墨忒尔律:模块不应该了解它所操作对象内部情形。比如C的方法f只能调用以下对象的方法。

  • C
  • 由f创建的对象
  • 作为参数传递给f的对象
  • C的实体变量持有的变量
var outpath=cxt.getOptions().getScart().getAbsolutePath();

这个代码就违反了上面的德墨忒尔律,调用了返回值的方法。这样就是暴露了内部结构。

第七章 异常处理

 1.try代码就像是事务,catch代码块将程序维持在一种持续状态。在编写可能抛出异常的代码时,最好先写出try-catch-finally 语句。

 2.根据需要定义异常类。对错误分类的方式有多种,可以依据来源,是组件还是其他地方,或者依据类型,是设备错误还是网络错误。不过在我们定义异常类的时候,最重要的考虑是如何捕获它们。

 3.别返回null值。程序中不断的看到检测null值的代码,一处漏掉检测就可能会失控。返回Null,作者认为这种代码很糟糕。建议抛出异常 或者返回特定对象(默认值)。更早的发现问题。同理,也应该避免传递Null值给其他的方法。

PS:在大多数的编程语言中,没有良好的方法能对付由调用者意外传入的null值。我们发布产品应该有容错的机制,程序不能轻易的就崩掉,有异常应该及时记录下来或给出提示。

第八章 边界

 有时候我们在使用第三方程序包或者开源代码的时候,或者依靠公司其他团队的代码,我们都得干净利落的的整合进自己的代码中。这一章就是介绍保持保持软件边界整洁的实践手段和技巧。

1.对第三方进行学习性测试,当第三方程序包发布了新的版本,我们可以允许学习性测试,看看程序包的行为有没有发生改变。

2.使用尚不存在的代码,有时候我们的第三方,还没有开发好API,但又不能影响到我们的开发进度,所以我们先可以定义好自己想要的接口。如果第三方ok了,我们再对接起来。
3.通过接口管理第三方边界,可以使用ADApter模式将我的接口转换为第三方提供的接口。这个是要注意,第三方的代码和自己的代码混合太多,这样不便管理。
posted @ 2021-10-01 21:12  敲敲代代码码  阅读(44)  评论(0编辑  收藏  举报