- 浏览: 2469833 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
这本书得到了国内一些知名, 不知名的圈内人的大力推荐(序1, 2, 3 ...). 不过在我看来也就一般般(难道是自己境界不够? 还是跟我看了不少类似的书有关?), 毕竟是10年前的书了, 虽然里面有一些观念放到现在也不过时, 不过随着日新月异的技术发展, 有些东西在现在来看也有些不合时宜, 而有些东西该有所创新了. 而且有些地方翻译的比较生硬, 看起来怪怪的.
不过原著者的兴趣爱好比较有噱头, 一个喜欢木工, 一个玩单引擎飞机
有些观念还是不错, 这里摘抄做个笔记
注重实效的程序员的特征:
新技术早期的采纳/快速的改进者
好奇, 探究事物的本质.
批判的思考
多才多艺
一个程序员的目标参考:
每天至少学习一门新的编程语言
每季度阅读一本技术书籍
也要阅读一些非技术书
参加本地的用户组织
试验不同的环境
跟上潮流
上网
交流越有效, 你就越有影响力
写email的注意事项:
在发送之前校对
检查拼写
让格式保持简单.
除非对方也能阅读富文本格式, 否则采用纯文本
设法让引文减至最少, 没有人喜欢看到一大段回复他人的引文, 最后你的回复确实的两个字"同意"
发送之前检查收件人名单
将重要邮件加以归档
DRY之重复的分类:
被迫的重复, 开发者别无选择, 环境所致.
无意的重复, 开发者没有意识到他在重复
偷懒的重复, 开发者偷懒, 因为ctrl+c&v 似乎更容易
开发者之间的重复, 不同的人重复了同样的工作.
要营造一种环境, 要让复用更容易, 如果不容易, 大家就不会去复用.
正交: 一个的变化, 对另一个不会产生影响, 比如数据库的变更, 不会影响界面
不要依赖你无法控制的事物属性
每当你的代码引用全局数据时, 它就把自己与共享该数据的其他组件绑在了一起
工具是手的延伸
找到导致问题的原因的一种非常简单, 却又非常有效的技术就是向别人解释它. 你一步步解释代码要做什么, 常常就能让问题从屏幕上跳出来, 宣布自己的存在.
当你遇到让人吃惊的bug时, 除了修正它之外, 你还需要确定先前怎么没有找到这个故障.
如果bug是因为一些参数导致的, 这些参数可能在爆发之前穿过了若干个层面, 因此需要加强对参数的检查
如果bug是某些人的错误假定导致的, 那么需要与团队讨论这个问题, 让更多的人知道这一点.
编写"内向"代码是有好处的, 而"内向"的工作方式有两种: 不向别人暴露你自己, 不与太多人打交道
这样的代码:
public void plotData(Date aDate, Selection aSelection){ TimeZone tz = aSelection.getRecorder().getLocation().getTimeZone(); ... }
plotData知道的太多了, 应该减少依赖, 应该写成这样:
public void plotData(Date aDate, TimeZone tz){ ... } plotData(someDate, someSelection.getTimeZone())
对象依赖的症状:
java的import列表太长
对某个模块的"简单"改动会传遍系统中的一些无关模块
开发者害怕改动代码, 因为他们不清楚哪些代码可能会受影响
有很多不必要的依赖关系的系统非常难以维护, 往往高度的不稳定.
某个对象的任何方法都应该只调用属于以下情形的方法:
它自身
传入该方法的任何参数
它创建的任何对象
任何直接持有的对象
一般情况下, 元数据是在运行时, 而不是编译时被访问和使用
将抽象放入代码, 将细节放进元数据
使用元数据编程的好书是可以迫使你通过推迟细节处理, 创建更健壮, 更抽象的设计--完全推迟到程序之外
我们想要推迟大多数细节的定义, 直到最后的时刻, 并且尽可能让细节保持"软和"--尽可能更易于改动
软件的工作方式与建筑设计并不怎么相似, 与建筑相比, 软件更像是园艺--你可以根据最初的计划和各种条件在花园中种植许多花木, 有些花木需要着重培养, 有些却只能做肥料, 有些需要修剪, 有些需要改变位置以更好利用光照和水土.
更喜欢拿建筑做比喻是因为: 建筑比园艺更科学, 它可以重复.
需要重构的代码特征:
重复
紧耦合非正交的设计
过时的知识
性能
把需要重构的代码比作一种"肿瘤", 切除它需要进行"侵入性"的外科手术, 你可以现在就手术, 趁它还小把它取出来, 你也可以等它增大并扩散--但那时切除它就会更昂贵, 更危险.
早重构, 常重构
要确保受到影响的代码的使用者知道该代码计划要重构, 以及明白这可能会怎样影响他们.
不要试图在重构的同时增加新功能
在开始重构之前, 确保你拥有良好的测试, 尽可能经常运行这些测试, 这样, 如果你的改动破坏了任何东西, 你就能很快知道.
马大叔认为维持良好的回归测试是自信的进行重构的关键.
不要把你创建的测试随便扔掉, 把它放入已有的测试中.
找出用户为何要做特定事情的原因, 而不是他们目前做这件事的方式, 这很重要. 到最后, 你的产品必须解决他们的商业问题, 而不是满足他们陈述的需求, 用文档记录需求背后的原因.
与用户一同工作, 以象用户一样思考
有些约束的绝对的, 有些则是先入为主的偏见, 绝对的约束应该得到尊重, 不管他们看上去多么愚蠢, 而外表上看来的约束可能不是真正的约束. 比如在酒吧的一个老把戏: 你拿出一瓶全新的, 未开启的香槟酒, 打赌说你可以从中喝出啤酒来, 诀窍是把酒瓶倒过来, 在酒瓶凹处倒一点啤酒.
思考如何解决一个问题:
有更容易的方法么?
你是在解决真正的问题, 还是被外围的技术问题转义了注意力?
这件事情为什么是一个问题?
是什么使它难以解决?
它必须以这种方式完成么?
它真的必须完成吗?
寻找bug有点像用网捕鱼, 我们用纤小的网(单元测试)捕捉小鱼, 用粗大的网(集成测试)捕捉吃人的鲨鱼, 有时鱼会设法逃跑, 为了抓住项目中游动的, 越来越狡猾的漏洞缺陷, 要补上我们发现的任何漏洞.
文档是代码的反应, 如果有歧义, 代码最要紧, 无论好坏.
一般而言, 注释应该讨论为何要做某件事, 它的目的和目标, 代码已经说明了它是怎样完成的, 所以如果再加上注释就违反了DRY原则.
代码的注释给你完美的机会, 可以用来把项目中那些难以描述, 容易忘记, 却又不能记载到别的任何地方记载下来: 工程上的权衡, 为何要做出某些决策, 放弃了那些替代方案等等
变量名必须精心选择, 而且必须有意义, 你会好几百次的阅读代码, 而却只会编写几次, 花时间拼写出ConnectionPool, 而不是cp.
发表评论
-
<异类>读书笔记
2013-03-06 07:54 0成功者能够获得更多的机会,从而能变得更为成功。税收愈减免,富人 ... -
《python学习手册》学习笔记
2013-03-11 22:25 3469python格式化传参数非常赞,用数字标明位置,值得java学 ... -
<万历十五年>读书笔记
2013-03-11 22:27 1595在网上下了一个电子书, 但是貌似跟万历十五年没啥关系, 都是讨 ... -
《鸟哥的linux私房菜》读书笔记(部分)
2013-03-11 22:27 2066x86是一种微机系统硬件架构,另一种是苹果的mac的架构 l ... -
《你的灯亮了吗》读书笔记
2013-03-06 07:20 1509这是一本原本写给程序员的书 本书的四个问题: 搞清问题的来源 ... -
《小狗钱钱》读书笔记
2013-03-06 07:17 1479一本非常不错的理财学习入门书, 以童话的形式, 儿童的思维方式 ... -
《我的奋斗》读书笔记
2012-04-14 22:03 2062文字写的很幽默, 故事也基本都是一些平常人的故事,看到了一个特 ... -
《Java Performance》书评
2012-01-15 18:32 2963原文: http://java.dzone.com/rev ... -
《程序员应该知道的97件事》读书笔记
2012-01-15 18:36 2387一本关于写代码的文 ... -
《影响力》读书笔记
2011-11-05 14:47 1834从书名上很可能以为 ... -
《浪潮之巅》读书笔记
2011-11-05 14:44 1373作为一个中国人通过分析硅谷高科技公司的一系列传奇, 总结出这 ... -
《黑客与画家》读书笔记
2011-11-05 13:37 1820以前看过《rework》, 觉得是每一个小型创业公司的创业宝 ... -
《乔布斯传》读书笔记
2011-10-18 08:53 2848在ipad上看完了这本书, 写的还不错, 里面没有无聊的八 ... -
《细说Java》读书笔记
2011-10-05 15:01 1994国人写的, 感觉是一 ... -
《敏捷估计与规划》读书笔记
2011-10-05 12:08 3178这本书断断续续看了很长时间, 内容非常不错, 基本涵盖了sc ... -
《怪诞心理学》读书笔记
2011-10-05 09:44 1823既然是怪诞, 那么整本书涉及的内容并不是我们平常司空见怪的一 ... -
《番茄工作法图解》读书笔记
2011-09-28 09:02 2390番茄工作法是时间管 ... -
《Java开发超级工具集》读书笔记
2011-09-28 08:59 2099"工欲善其事必先利其器", 在平时的开发 ... -
《敏捷迭代开发管理者指南》读书笔记
2011-09-24 13:09 2217这是一本关于迭代开发 ... -
《解析极限编程》读书笔记
2011-09-24 13:03 1788不知道是kent beck的语 ...
相关推荐
读书笔记:程序员修炼之道从小工到专家
听说程序员的修炼笔记很好,自己看的过程中,感觉很多还不懂,于是在看第一遍的时候将自己觉得第一遍可以的地方给记下来
读书笔记:程序员的自我修养阅读笔记
读书笔记:程序员的数学 课的笔记
读书笔记:程序员的基础数学课笔记
读书笔记:学习程序员健康指南做的笔记
读书笔记:学习程序员的数学基础课笔记代码
《简明银行会计——程序员视角》读书笔记思维导图
读书笔记:基于vue的程序员的基础数学课笔记项目
Linux常见驱动源码分析(kernel hacker修炼之道)--李万鹏 李万鹏 IBM Linux Technology Center kernel team 驱动资料清单内容如下: Linux设备模型(中)之上层容器.pdf Linux设备模型(上)之底层模型.pdf Linux...
【程序员面试宝典笔记总结】 在程序员的求职过程中,面试和笔试是至关重要的环节,而一份详实的面试宝典笔记能为准备阶段提供极大的帮助。这份笔记涵盖了多个方面的知识点,旨在帮助程序员巩固基础,提升技能,从而...
在学习过程中,阅读和理解"黑马程序员学习笔记.txt"这份文档至关重要。它可能包含了详细的代码示例、解释和练习,帮助你巩固所学知识。同时,建议配合实际编程实践,动手编写代码,因为实践是检验理解和掌握知识的...
个人读书笔记,学习共享,希望每个苦恼于代码一坨坨混乱不堪的程序员都能学习. * 整洁代码的意义? 可读性,可维护性。 * 如何写出整洁代码? 1.只做一件事 2.不重复 3.有表达力 * 整洁代码的态度要求,要遵守...
黑马程序员java培训就业班笔记:day06总结
"黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...
黑马Docker课程文档笔记
b站黑马程序员java视频学习笔记
读书笔记:架构整洁之道读书笔记
读书笔记:代码整洁之道读书笔记