`
wdhdmx
  • 浏览: 303995 次
  • 性别: Icon_minigender_1
  • 来自: 山西
博客专栏
D4bbb5f7-9aa4-3e66-8194-f61b3f0241c2
天天编程
浏览量:21926
社区版块
存档分类
最新评论

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

阅读更多

     这几天看了《代码整洁之道》,看的不认真,书写的应该很不错,一个十几年经验的人写的,但是里面很多东西我都不理解,也不觉得他说的对,但是我先大概记着他的观点,等以后再理解。

     还有很多类的设计什么的,看了和没看一样,还是基础和经验太差。

     下面是一些文中对我影响深刻的句子。

 

第一章 整洁代码

 

第二章 有意义的名字

起一个有意义的名字,长点无所谓,但不要有歧义,在这个上面花时间是值得的。

第三章 函数

函数要保持短小,这个我不赞同。。
1.不要重复自己的代码
2.名称要具有描述性
3.函数参数尽量<2
    尽量将二元函数写成一元函数
            write(ouputStream,name)
            ouputStream.write(name)
            讲outputStream写成成员变量
    参数多的话考虑封装成类Point(x,y)
3.函数承诺一件事,但做了别的事(书中例子)
4.使用logger.log代替异常处理
5.try   catch 抽离(完全不理解)
6.一开始写的代码都是冗余而复杂,配上单元测试,打磨这些代码,分解函数,修改名称,拆散类,将代码变整洁

第四章 注释

作者一致暗示我不要写注释,但我觉得代码一定要注释。
1.注释一般不会随代码的修改而修改。
2.好注释就是不写注释
3.不要的注释代码,保证删除

第五章 格式

1.想报纸的格式学习,标题就能表现出内容的意思
2.tomcat有一般文件>200行
3.宽度不要超过120
4.一定服从团队规则

第六章 对象和数据结构

没什么收获

 

第七章 错误处理

1.不反悔null值
2.不如直接抛出异常
3.返回夜里对象
4.Collections.emptyList()返回一个预定义的可变列表
5.不传递null值

第八章 边界

1.学习log4j
2.学习性测试解决第三档程序包发布新版本
3.使用未知代码一定要加倍小心

第九章 单元测试

1.测试代码和生产代码一样重要

第十章 类

1.只要讲类的要求,现在其实对类的长短和职责都没有什么概念,所以这一章和没看一样。

第十一章 系统

1.复杂要人命,它消磨开发者得时间
2.软件系统应该将启始过程和之后的运行逻辑分开,在起始过城中构建应用对象,也会存在互相依赖的关系
3.一开始做好系统纯属神话(扩容)
4.无论是设计系统或单独的模块,不要忘记使用可工作的最简单方案
   

第十二章 迭进

1.项目主要成本在长期维护,所以代码要有足够的表达力
2.多花一点点时间在每个函数和类上,选择将大函数切分为小函数。
3.用心。

第十三章 并发编程

本章中主要讲并发变成的一些注意事项和简单的讲解了一下测试方法。文中一直在强调公共资源的重要性,要用心设计公共资源。
1.分离并发中的相关代码。
2.一定要限制数据作用域。
    忘记一个临界区就可以能会破坏共享数据。
    并发中很难找到错误的地方。
3.避免共享数据
    复制对象
    数据副本
4.文中提到多线程上,ConcurrentHashMap比HashMap要好,有空要看一下源码
5.对公共资源要用心设计,就像哲学家吃饭一样,合理利用资源。
6.锁是很宝贵的,尽量少的使用锁,并且保证临界区的微小。
7.测试多线程:
    尽量对的线程同时运行。
    在不同平台下运行。
    强行停止,等待。
8.学习类库,了结基本算法。

第十四章 逐步改进

这一章讲的一段非常经典的代码,努力的看了,没坚持住,看了一点,就在缝隙中找中文看,只知道说代码不整洁的话,后果很严重。

第十五章 jUnit内幕

目前没用到这个框架,也不会,所以这一章就不看了,

第十六章 重构SerialDate

哎,有空看源码吧

第十七章 味道与启发

作者在开头又一次暗示代码不应该加注释,我又一次无视了,整章算是对前面得总结吧,不过假如了很多新的东西。

1.修改前给自己一个为什么修改的理由
2.及时删除旧的注释
3.边界处理不能依赖直觉,记住要编写测试
4.关闭编译器警告,会有无穷无尽调试风险
5.设计好的模块借口非常的小,没有依赖函数,限制了暴露的接口数量,隐藏工具函数、常量和临时变量。
6.相同对象命名为相同变量,例:HttpServletRequest request. 这样易于阅读
7.边界代码难以追踪,所以吧边界代码集中到一处,不要到处都出现+1 -1这样的字样。用变量去替代它们。例:nextint=i+1
8.在借口中减少放入的常量,也可以试着使用枚举
9.名称对软件的可读性有90%的作用,取名花时间。。
10.作用域越大,名字就尽量长一点。
11.一个好名字:createOrReturnObject
12.测试不略过小测试,边界,相近bug,快速和高覆盖率

附录:
A。并发编程
讲的并发编程,讲并发中的各个需要注意的细节和解决方案。
B。SerialDate源码

 

 

分享到:
评论
3 楼 Jennycn 2011-10-01  
嗯,我看你写,你一直在否定自己,许多事情有想法,就去想办法吧:)

加油
2 楼 wdhdmx 2011-10-01  
谢谢对我的一点的认同。你是唯一回复的人,呵呵。
1 楼 Jennycn 2011-09-30  
从你这个笔记里,我也学习到很多

不过,加注释到底好还是不好啊?我看很多人说要是不写文档,至少要写注释。。。

另外,谢谢你:)虽然,你可能不知道为啥谢谢你。

相关推荐

Global site tag (gtag.js) - Google Analytics