读代码整洁之道有感

  1. 代码尽量简洁。
  2. 函数参数尽量少
  3. 命名尽量规范,动词名词尽量合理专业术语命名少一些奇葩命名和变量命名
  4. 抽离try catch 代码块

第五章 格式

5.1 垂直分布 调用者函数方法应该尽量在被调用者函数方法之上,挨着比较好。 注意缩进。

第六章 对象和数据结构

6.1 尽量封装对象传参,

第七章 错误处理

7.1 上游try catch finally 下游throw 会使得代码整洁,根据情况而定 尽量不让null进入程序

第八章 边界

8.1 集合尽量使用泛型

8.2 使用API可以多写测试用例,方便新版本发布的时候运行下看看新旧版本的差异做出更新,使用新API的能力。

8.3 善于利用桥接模式在不给API文档的时候写好接口,实现类可以等给了接口写。

第九章 单元测试

9.1 快速 独立 可重复 自足验证 及时

第十章 类

10.1 单一职责 内聚 对修改封闭,对添加开放

第十一章 系统

11.1 最好的集成方法是无侵入式集成,可插拔式集成。springaop切面就做的很好。 最好的系统就是代码尽量简洁。

第十二章 跌进

12.1 单一职责很重要。 类尽量小聚合,保持类方法尽量少

第十三章 并发编程

13.1 对象是过程的抽象,线程是调度的抽象。

13.2 单一权责原则 分离并发和和其他代码; 限制数据作用域 如:synchronized关键字; 使用数据副本; 线程应尽可能的独立

13.3 线程执行模型:

13.4 锁的使用:

警惕同步方法之间的依赖

13.5 保持同步区域微小

13.6 很难编写正确的关闭代码

第十四章 逐步改进

14.1 代码整洁

代码重构,在于一直更新自己不好的代码趋向于自己认为的完美。 时刻保持自己代码的整洁。

第十五章 JUnit内幕

所有代码都能重构的比之前更好,要推翻之前的不断试错,不断更新才能更好。

第十六章 重构 SerialDate

代码不合理的需要迁移。

第十七章 味道与启发

17.1 注释简洁明了,没用的注释别写,过期的删除,多些一些代码中没有的但是需要注意的细节。

17.2 把多部才能实现的构建最好整成一歩,多步才能做到的测试整成一步。

17.3 函数 参数超过3个就需要考虑是否该改造方法了,最好是没有参数的方法,输出参数最好不要有,比如可以用改对象的状态来做替代,标识参数也很让人迷惑,违反了单一职责原则,应当消灭它,死函数就要删除,代码管理工具可以做找回。

17.4 一般性问题 一个文件中最好语言统一、不能忽视安全、避免重复、 抽象层级注意正确性、基类不能依赖于派生类、信息不能过多、死代码记得删除、垂直分隔关联代码少于100行代码、前后一致、混淆视听避免、人为耦合注意、特性依赖不该有、选择算子参数、晦涩的意图需要注释、位置放对地方、恰当的静态方法、使用解释性变量、函数名称应该表达其行为、理解算法、把逻辑依赖改为物理依赖、用多态替代if/else 或 switch/case、遵循标准约定、用命名常量替代魔法值、准确、结构甚于约定、封装条件、避免否定性条件、函数只该做一件事、掩蔽时序耦合、别随意、封装边界条件、函数应该只在一个抽象层级上、在较高层级放置可配置数据、避免传递浏览、合理使用通配符、不要集成常量、而是该导入常量类、采用描述性名称、名称应该与抽象层级相符、尽可能使用标准命名法、无歧义的名称、为较大作用范围选用较长名称 、避免编码、名称应该说明副作用。

17.5 测试 别略过小测试、使用覆盖率工具、被忽略的测试就是对不确定事物的疑问、测试边界条件、全面测试相近的条件、测试失败的模式有启发性、测试覆盖率的模式有启发性、测试应该快速。

附录A 并发编程 II

死锁:1. 互斥 2. 上锁及等待 3. 无抢先机制 4. 循环等待

避免死锁: 1. 不互斥 几乎不可能,大多数资源都有上限 2. 不上锁及等待,可能会引起线程饥饿或者活锁。 3. 满足抢先机制,管理请求复杂。 4. 不做循环等待,如果获取资源的顺序和使用资源的顺序不匹配也就无法满足,或者无法获取资源顺序那么这个条件也无法满足。

转载于:https://my.oschina.net/u/3730149/blog/3063385

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值