《高效程序员的45 个习惯》读书笔记

[align=center][img]http://t.douban.com/lpic/s4073509.jpg[/img][/align]

本书和其他的"怎么写好出优秀的程序"的书籍基本没有什么两样. 如果说要有些区别的话, 就是里面添加了一些敏捷的元素.
另外为了说明某个问题, 里面的一些比喻非常有趣.

对于里面一些觉得对自己有益的东东, 做了一些笔记.

你深知怎样才是正确的, 或者至少知道目前的做法是错误的. 要有勇气向其他的项目成员, 老板或者客户解释你的不同观点. 当然, 这并不容易. 也许你会拖延项目的进度, 冒犯项目经理, 甚至惹恼投资人, 但是你都要不顾一切, 向着正确的方向前进.

做正确的事, 要诚实, 要有勇气去说出实情. 有时这样做很困难, 所以我们要有足够的勇气.

不停的问为什么, 不能只满足于别人告诉你表面现象. 要不停地提出知道你问明白问题的根源为止.

问问题, 你有可能会跑题, 问了一些与主题无关的问题. 就好比是, 如果汽车启动不了, 你问是不是轮胎出了问题, 这是没有任何帮助的, 问"为什么", 但是要问到点子上.

"这个, 我不知道"是一个好的起点, 应该由此进行进一步的调查, 而不应该到此戛然而止.

以固定有规律的长度进行迭代, 也许刚开始你要调整迭代的长度, 找到团队最舒服可行的时间值, 但之后就必须要坚持.

好的设计应该是正确的, 而不是精确的, 也就是说, 它描述的一切必须是正确的, 不应该涉及到不正确或者可能会发生变化的细节, 它是目标, 而不是具体的处方.

你依赖单元测试, 如果代码没有测试, 你就会觉得很不舒服, 就像是高空作业没有系安全带一样.

开发代码时, 更应该注重可读性, 而不是只图自己方便, 代码阅读的次数要远远操作编写的次数, 所以在编写的时候值得花点功夫让它读起来更加简单. 实际上, 从衡量标准上来看, 代码清晰程度的优先级排在执行效率之前.

注释有时候是为了帮写的不好的代码补漏.

代码必须明确说出你的意图, 而且必须富有表现力, 这样可以让代码更易于被别人阅读和理解. 代码不让人迷惑, 也就减少发生潜在错误的可能. 一言以蔽之, 代码应意图清晰, 表达明确.

应该让自己或团队的其他任何人, 可以读懂自己一年前写的代码, 而且只读一遍就知道它的运行机制.

解释代码做了些什么的注释用处不那么大, 相反, 注释要说明为什么会这样写代码.

编写代码的时候, 要经常留心可以改进的微小方面, 这可能改善代码的可读性. 也许你会发现可以把一个方法拆成几个更小的方法, 使其更易于测试.

在写几行代码之后, 你会迫切地希望进行一次构建/测试循环, 在没有得到反馈时, 你不想走得太远.

如果你和测试循环花费的时间过长, 你就不会经常运行他们了, 要保证测试可以快速运行.

优雅的代码第一眼看上去, 就知道它的用处, 而且很简洁.

代码几乎总是可以得到进一步精炼, 但是到了某个点之后, 在做改进就不会带来任何实质性的好处了.

当然简单的解决方案必须要满足功能需求. 为了简单那而在功能上妥协, 这就是过分简化了.

假定把所有的衣服都扔到抽屉里, 当需要找一双袜子的时候, 要翻遍里面所有的衣服:裤子, 内衣, T恤等, 才能找到. 这很麻烦, 特别是在赶时间的时候. 现在假定所有的袜子都放在一个抽屉里面(而且是成双放置的), 全部的T恤放在另外一个抽屉中, 其他衣服也分门别类, 要找到一双袜子, 只要打开一个抽屉就可以了.

类也要遵循内聚性, 如果一个类的方法和属性共同完成了一个功能(或一系列紧密相关的功能), 这个类就是内聚性的.

一个更具有内聚性的组件不会有太多导致其变换的原因, 也因此更加稳定.

面向过程的代码取得信息, 然后做出决策, 面向对象的代码让别的对象去做事情.

作为某段代码的调用者, 开发人员绝对不应该基于被调用对象的状态来做任何决策, 更不能去改变该对象的状态, 这样的逻辑应该是被调用对象的责任, 而不是你的. 在该对象之外替他做决策, 就违反了它的封装原则, 而且为bug提供了滋生的土壤.

假定送报男孩来到你的门前, 要求你付给他本周的报酬, 你转过身去, 让送报男孩从你后屁股兜里掏出钱包, 并且从中拿走两美元(你希望是这么多), 再把钱包放回去. 这个过程中, 送报男孩作为调用者应该告诉客户付给他两美元, 他不能探究客户端财务状况, 或者钱包的厚薄, 他也不能代替客户做任何决策. 这都是客户的责任, 而不属于送报男孩. 敏捷代码也应该以同样的方式工作.

要遵循里氏替换原则, 相对基类的对应方法, 派生类服务(方法)应该不要求更多, 不承诺更少, 要可以进行自由的替换, 在设计类的继承层次时, 这个一个非常重要的考虑因素.

记录问题的日志内容:
问题发生的日期
问题简述
解决方案详细描述
应用文章或者网址, 以提示更多细节或相关信息.
任何代码片段, 设置或对话框截屏, 只要他们是解决方案的一部分, 或者可以帮助更深入地理解相关细节.

记录问题的时间不能超过解决问题的时间. 要保持轻量级和简单, 不必达到对外发布式的质量.

要记录团队做出一个重要决策的原因, 否则, 在6~9个月之后, 想要重新回顾决策过程的时候, 这些细节就很难再记得了.

警告即错误

在解决问题时, 要将问题域与周边环境隔离开, 特别是在大型系统应用中.

由于大家都是在团队中一起工作, 每个人都要修改自己的个人编码习惯, 来适应团队的其他成员.

关于站立会议
要保证会议议题不会发散, 每个人都应该回答下述三个问题:
昨天有什么收获?
今天计划要做哪些工作?
面临哪些障碍

只能给予每个参与者很少的发言时间(大约两分钟), 也许要用计时器来帮助某些收不住话头的人, 如果要详细讨论某些问题, 可以在站立会议之后, 在召集相关人员(在回忆中说"我需要跟Fred和Wilma讨论一下数据库"是没有问题的, 但是不要是深入讨论细节.)

一般来说, 在大家到公司之后的半个小时到一个小时之内举行, 是个不错的选择.

每日站立会议的好处:
让大家尽快投入到一天的工作中来
如果某个开发人员在某一个点上有问题, 他可以趁机将问题公开, 并积极寻求帮助.
帮助TL了解哪些领域需要更多的帮助, 并重新分配人手.
让团队成员知道项目其他部分的进展情况.
帮助团队识别是否在某些东西上有重复劳动而耗费了精力, 或者是不是某个问题有人已有现成的解决方案.
通过促进代码和思路的共享, 来提升开发速度.
鼓励向前的动力:看到别人报告的进度都在前进, 会彼此形成激励.

注意事项:
站立会议的时间最多不能超过30分钟, 10~15分钟比较理想.
虽然大多数团队需要每天都碰头, 但是对于小型团队来说, 这样做可能有些过头了, 不妨两天举行一次, 或者一周两次, 这对小团队来说足够了.
如果觉得站立会议是浪费时间, 那可能是大家都还没有形成真正的团队意识. 这并不是坏事, 有利于针对问题进行改正.

最基本的code review列表
代码是否被读懂和理解
是否有任何明显的错误
代码是否会对应用的其他部分产生不良影响?
是否存在重复的代码?
是否存在可疑改进或重构的部分?

代码复查需要积极评估代码的设计和清晰程度, 而不只是考量变量名和代码格式是否符合组织的标准
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: typora.7z 是一款非常实用的程序员笔记软件。它采用了简洁的设计风格,提供了丰富的文本编辑功能,帮助程序员能够轻松记录和管理自己的代码和笔记。 typora.7z 的主要特点有以下几点: 首先,typora.7z 提供了所见即所得的编辑界面,简化了程序员的操作过程。用户可以直接在编辑界面中进行文本的编写,并实时预览效果,无需频繁切换窗口或刷新页面。这种所见即所得的编辑方式使得程序员可以更加专注于内容创作,提高了工作效率。 其次,typora.7z 支持各种主流的格式和语法。程序员可以使用Markdown语法进行文本的编辑,这种语法简单易学,能够很方便地实现标题、列表、代码块等常用功能。此外,typora.7z 还支持LaTeX数学公式、流程图、时序图等特殊格式的插入,满足程序员在编写技术文档时的多样化需求。 此外,typora.7z 还提供了丰富的自定义选项。用户可以根据自己的喜好设置字体、主题、布局等,使得编辑界面更符合个人阅读习惯。而且,typora.7z 还支持导出为多种格式,如PDF、HTML、图片等,方便用户在不同场景下使用和分享笔记。 最后,typora.7z 还具备云同步功能。用户可以将自己的笔记存储在云端,实现多设备之间的数据同步,方便用户随时随地查看和修改笔记,无需担心数据的丢失。 总之,typora.7z 是一款功能强大、操作简单的程序员笔记软件。它的所见即所得编辑界面、支持多种格式和语法、提供自定义选项和云同步功能,使得程序员能够更加方便、高效地记录和管理自己的代码和笔记。无论是在日常开发中,还是在技术分享和学习中,typora.7z 都是一个不可或缺的好帮手。 ### 回答2: Typora是一款设计简洁、功能强大的程序员笔记软件。它支持多种主题选择,包括黑暗模式,让用户可以自定义界面以适应不同的工作环境和个人喜好。与其他笔记软件相比,Typora的最大特点是采用所见即所得的编辑方式,用户可以直接在编辑文本的同时预览所产生的效果。这使得编辑笔记变得更加直观、高效。 Typora支持多种常用的文本编辑功能,如插入图片、表格、代码块等。它还支持LaTeX数学公式的编辑和渲染,方便用户在笔记中添加专业的数学公式。此外,Typora还内建了Markdown标记语言的支持,使用户能够借助简洁易懂的标记语言来编辑和格式化笔记。 Typora还提供了一系列便捷的功能,如自动补全、实时字数统计等,帮助用户提高工作效率。用户可以通过内建的全局搜索功能轻松查找到所需的笔记内容。并且,Typora支持将笔记导出为多种格式,如HTML、PDF等,方便用户在不同的场合下使用。 总的来说,Typora是一款非常实用的程序员笔记软件。它的所见即所得编辑方式和丰富的功能让程序员可以更方便地记录和管理工作中的笔记。无论是写代码、学习笔记还是个人随笔,Typora都能满足用户的需求。无论你是初学者还是资深程序员,Typora都值得一试。 ### 回答3: Typora是一款功能强大的程序员笔记软件,它以其简洁、高效和易用的特点受到了广大程序员的喜爱。 首先,Typora的界面简洁清爽,没有繁琐的功能按钮和复杂的布局,用户可以专注于写作和笔记,而不会被繁杂的界面干扰。它采用所见即所得的编辑模式,即用户在编辑窗口中所看到的就是最终的展示效果,无需频繁切换编辑和预览界面。 其次,Typora支持多种编程语言的语法高亮,在编写程序代码时能够清晰地突出显示关键词和语法结构,让代码更加易读易懂。此外,Typora还支持数学公式的编辑和渲染,可以方便地插入数学符号和公式,适用于编写技术文档、学术论文等需要使用数学公式的场景。 另外,Typora还具备一些便捷的编辑和排版功能,例如自动补全括号、手势操作、实时预览、导出多种格式等。使用Typora可以通过简单的快捷键或手势操作实现文档的快速编辑和格式调整,提高了写作效率。 最后,Typora支持各种主流平台,包括Windows、Mac和Linux,用户可以在不同操作系统上无缝切换使用。此外,Typora还可以与其他云端存储服务(如GitHub、Dropbox)进行集成,方便用户进行数据备份和共享。 总之,Typora作为一款优秀的程序员笔记软件,以其简洁、高效和易用的特点,满足了程序员在编写笔记和技术文档时的各种需求,为程序员提供了一个舒适的写作环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值