[读书笔记]Clean Code (8-完结)

忘了发出来,现在补上
时间: 2016/5/6  星期五

今天阅读了本书的后半部分,有两点不同:
1. 层次,前半部分是琐碎的细节,后半部分则基于前半部分但却站在更高的角度来讲怎样写代码。
2. 后半部分还对前半部分进行了归纳总结,以实例的方式一点点地告诉你之前讲的那些规则是如何使用的。
九、单元测试
      1. TDD定律
 	在编写不能通过的单元测试前,不可编写生产代码
	只可编写刚好无法通过的单元测试,不能编译也算不通过
	只可编写刚好足以通过当前失败测试的生产代码
----- 这三条写的有点绕,我的理解就是:要把测试代码当生产代码来写,测试也很重要
       2.五大规则(F.I.R.S.T)
	快速:就是代码质量要好,高效
	独立:不同测试之间应相互独立
	可重复:就是在各种环境中都可测试通过
	自足验证:测试不依赖手工操作来知晓是否通过
	及时:测试应在生产代码之前进行编写
十、类
      主要注意一个点,类应短小,可通过以下两种方式达到此目的:
1. 权责单一:一个类的权责不应太多,太多则需考虑拆成多个类了
2. 高内聚:类的实体变量应尽可能少,类中方法尽可能多地使用到这些变量
十一、系统
       1.系统构造与使用分开
	工厂:使用工厂方法自行决定何时创建实例,但是构造细节却在其他地方
	依赖注入:当A对B有依赖时,A中不负责B的实例化(这就是类的权责单一原则)
       2.本章的后半部分提到的AOP,AspectJ等内容都以Spring,EJB等框架为例,稀里糊涂	的,还不清楚作者要表达什么,暂时没有体会。
十二、跌进
        跌进这一章提到的点不多
       1.运行所有的测试:为能方便测试,我们的生产代码也要足够短小,耦合度低
       2.重构:在写代码过程中要及时重构,保持代码的优雅
       3.不可重复:已有的代码要利用起来,消除重复
       4.表达力强:这应该是一个目标或是结果,做好前边的工作自然而然可以达到
十三、并发编程
      1.为什么:它可以将“目的”和“时机”分离,进行解耦
      2.并发防御原则
	单一权责:主要关注一点,并发相关的代码应分离出来
        为此,三点建议:
         1).限制数据作用域
         2).使用数据副本:这不就是ThreadLocsal么~~
         3).线程应尽可能地独立
       3.学习已有类库:Java中的并发包之类
okay,基本东西就是这些了,后边的章节就是一些实例代码。



【转载请注明出处】

GitHub地址: https://github.com/MummyDing

出处: blog.csdn.net/mummyding

时间: 2024-10-11 01:19:42

[读书笔记]Clean Code (8-完结)的相关文章

[读书笔记]《Android开发艺术探索》第十五章笔记

Android性能优化 Android不可能无限制的使用内存和CPU资源,过多的使用内存会导致内存溢出,即OOM. 而过多的使用CPU资源,通常是指做大量的耗时任务,会导致手机变的卡顿甚至出现程序无法响应的情况,即ANR. 15.1.1布局优化 1.怎样进行布局优化? 首先删除布局中没用的控件和层级 其次有选择的使用性能较低的ViewGroup. 布局优化的还有一种手段是採用标签.标签.ViewStub.标签主要用于布局重用,标签一般和配合使用,它能够减少减少布局的层级,而ViewStub则提供

[Linux笔记]杀死僵尸程序

A zombie is already dead, so you cannot kill it. To clean up a zombie, it must be waited on by its parent, so killing the parent should work to eliminate the zombie. (After the parent dies, the zombie will be inherited by init, which will wait on it

[Linux笔记]Ubuntu14.04+QT5.2配置mysql

安装qt: 官网下载qt5.2.1:qt-opensource-linux-x64-5.2.1.run 直接命令行运行:./qt-opensource-linux-x64-5.2.1.run 选择安装路径:(我选择的是/home/myname/Qt)默认为/home/yourPCname/Qt5.2.1 一步一步安装,选择组建时记得勾选“Source Components”,否则后续重新编译sql的plugin可能需要重装qt 安装mysql,编写简单测试程序: #include <QAppli

[Linux笔记]数据库mysql配置命令

# 检查MySQL服务器系统进程 ~ ps -aux|grep mysql mysql 1103 0.0 0.3 492648 51780 ? Ssl 14:04 0:21 /usr/sbin/mysqld sharon 15918 0.0 0.0 15940 968 pts/4 S+ 21:36 0:00 grep --color=auto mysql # 检查MySQL服务器占用端口 ~ netstat -nlt|grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.

[Linux笔记]配置ssh远程连接步骤

安装ssh: sudo apt-get update sudo apt-get install openssh-server 查看ssh服务器是否启动: sudo ps -e | grep ssh 查看到有ssh-aget和sshd同时都有时,配置正确. 修改ssh配置文件: sudo gedit /etc/ssh/sshd_config 找到PermitRootLogin no一行,改为PermitRootLogin yes.完成! 重启.停止ssh服务: sudo service ssh r

[阅读笔记]代码整洁之道

第一章: 1.混乱的代码难以维护,导致生产力越来越低.糟糕的代码引发混乱,越改越烂. 2.整洁的代码:优雅,高效,少依赖,性能优,命名规范,清晰尽量少的api 3.破窗理论:窗户破损的建筑让人觉得无人照管,于是别人也无心看管,任其继续破损,最终自己也参加破坏活动. 第二章  有意义的命名 1.使用可搜索的名称 2.避免编码,避免把类型作用域编进名称:消除成员前缀m_,接口前缀I 3.类名应该是名词,名词短语,不能是动词 4.方法名是动词,动词短语,get set is前缀 5.别用双关语言,一个

[Linux笔记]mysql数据库常用操作命令

#数据库操作: #建立数据库 create database data_name #删除数据库 drop database data_name #查看: show databases; #表操作: #列出表 show tables; #创建表: create table TAB_NAME( id int(10) not null auto_increment primary key, name varchar(40), pwd varchar(40) )charset=gb2312; #删除表

Clean Code 读书笔记三

clean code 之方法(函数) - 短小 ,再短小,更短小 20行最佳 只做一件事 准确说来每个方法应该是只做抽象概念上的的一件事 只做一件事的方法是无法把逻辑分段的 自顶向下的代码 To say this differently, we want to be able to read the program as though it were a set of TO paragraphs, each of which is describing the current level of

clean code 读书笔记一

什么是 clean code ? 大神对优雅代码的定义: I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy,