《代码整洁之道》读书笔记系列八

两盒软妹~` 提交于 2019-12-02 15:00:52

迭进

1、通过迭进设计达到整洁目的

运行所有测试

不可重复

表达了程序员的意图

尽可能的减少类和方法的数量

以上规则按照其重要程度排序

递增式的重构代码,测试消除了对清理代码就会破坏代码的恐惧

尽可能少的类和方法

并发编程

关于并发编程的中肯说法

并发会在性能和额外代码上增加一些开销

正确的并发是复杂的,即便对于简单的问题也是如此

并发缺陷并非总能,所以总被看做偶发事件而忽略,未被当作真的缺陷看待

并发常常需要对设计策略的根本性修改

并发防御的原则

a、单一职责原则

并发相关的代码有自己的开发、修改和调优的生命周期

并发相关的代码有自己要对付的挑战,和非并发相关代码不同 而且更难

即使没有周边应用程序的负担,写的不好的并发代码可能出错方式的数量也很大

建议:分离并发相关代码和其他代码

b、推论 限制数据的作用域

c、推论:使用数据副本

避免共享数据的好方法之一就是一开始就避免共享数据,某种方式下可能复制对象并以只读方式对待,再另外的情况下,可能复制对象,对多个线程中的复本进行收集,并在单个线程中合并这些结果。

d、推论:线程应该尽可能的独立

建议:尝试将数据分解到可能独立的线程操作的独立子类

e、线程执行模型

生产者-消费者模型

读者-作者模型

宴席哲学家 哲学家就餐问题

f、警惕同步方法之间的依赖

g、保持同步区域微小

测试线程代码的建议

a、将伪失败看作可能的线程问题

不要将系统的错误归咎于偶发事件

b、先使非线程代码可工作

不要同时追踪非线程缺陷和线程缺陷,确保代码在线程之外可以工作

c、编写可插拔的线程代码

d、编写可调整的线程代码

要获得良好的线程平衡,常常需要试错。

e、运行多于处理器数量的线程

f、在不同的平台上运行

尽早并经常的在所有的目标平台上运行线程代码

g、装置试错代码

装置Object.wait Object.sleep Object.yield Object.priority等方法的调用 改变代码的执行顺序

有两种装置代码的方法 硬编码和自动化

自动化是使用异动策略搜出错误

方法:通过aop或者cglib或者asm之类的工具,或者contest工具等

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!