课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 卓有成效的程序员 读书笔记
  • 卓有成效的程序员 读书笔记

    发布:昆明Java培训      来源:图灵社区      时间:2016-06-07

  • 一.机制

    1、加速法则 :使用各种工具或技巧,使自己工作效率最优化

    关注本质,而非形式

    键盘输入总比导航快 简化启动面板,将最常用功能最优先化

    花点时间来学习你手边所有隐藏的快捷键

    环境切换会消耗时间,尽量减少环境切换

    记住操作的历史,忘记历史就意味着你得重新再输入一遍

    嵌入图形化工具的命令提示符让你鱼与熊掌兼得

    在资源管理器中嵌入命令提示符使环境切换更容易

    开发时优先使用键盘而非鼠标

    在上下文中学习IDE快捷键,而不要出背长长的列表

    当你第二次输入一个复杂结构时,将它做成模板

    在工具中使用查找手段来导航

    如果要对多行文本做同样的事情,就应该找出其中的模式,并把它记录为一个宏

    在一个文本上执行某个特定操作的次数越多,就越有可能会再次重复他

    不要总是重复输入相同的命令,使用键盘宏功能

    每天花一点时间来使每天都更高效

    2、专注法则:想办法改变环境以减少打扰,减少来自电脑的干扰以及借助工具保持专注

    排除干扰

    精力越集中,思维越缜密

    策略:隔离策略、关掉不需要的提示、创造安静时间

    搜索优于导航

    草堆越大,从中找到一根针就越难

    不要文件树,要搜索

    在诉诸高级搜索之前,先尝试简单的搜索

    使用有根视图,有根视图把资源管理器变成了项目管理工具

    充分利用内建的机制(例如颜色)来帮助你集中注意力

    使用基于项目的快捷方式,用链接来创建虚拟的项目管理目录

    虚拟桌面可以让原本杂乱无章的一大推窗口变整洁

    3、自动化法则:自动化每天重复的工作或任务,留住宝贵的时间做更有价值的事情

    卓有成效的程序员 读书笔记

    不要重新发明轮子,给合适的任务寻找合适的工具

    即便不是工具最初的设计意图,只要是合适的场合,同样可以使用这些工具

    不要浪费时间动手去做可以被自动化的事情

    做简单重复的事情实在浪费注意力

    以创造性的方式解决问题,有助于在将来解决类似的问题

    是否应该自动化的关键在于投资回报率和缓解风险

    研究型的工作应该放在时间盒里做

    别让自动化的努力变成剪牦牛毛(注意你的解决的核心问题)

    建立本地缓存

    自动访问网站(cUrl工具)

    与RSS源交互|Yahoo!pipes、automator

    在构建之外使用ant,

    用Rake执行常见任务

    用Selenimu浏览网页

    用Bash统计异常数

    4、规范性法则:消除重复,保持规范化

    DRY-Don’t repeat yourself!

    对于任何你不自己去构建的东西,只在版本控制中保存一份副本

    使用间接机制创建友善的工作空间

    使用间接机制来保持稳健同步

    通过复制粘贴来复用是邪恶的,不论你复制粘贴到是什么

    利用虚拟平台使项目以来标准化

    始终保持代码和数据库结构的同步

    使用迁移为数据库结构的改动创建可重复的快照

    过时的文档比没有文档更糟,因为它会自动误导你

    对管理者来说,文档意味着缓解风险

    始终保持“活”的文档,最好是能自动生成svn2wiki

    任何需要费劲创造的东西,都让它的创造者欲罢不能

    白板+数据相机强过任何的CASE工具

    尽量生成所有的技术文档

    重复是软件开发中最大的阻力

    二.实践

    1、测试驱动设计

    测试代表着软件开发行为中工程式的严谨部分

    把注释重构成方法

    代码需要进行度量

    代码需要统计代码测试覆盖率

    2、静态分析:通过软件工具对程序代码进行验证

    静态分析工具提供了便宜实惠的验证手段

    动态语言分析

    3、当个好公民

    4、YAGNI – You Ain’t Gonna Need It!你不会需要它

    如无必要,勿增复杂度

    软件开发首先是一场沟通博弈

    5、古代哲人 – 哲学思想对构建高质量软件有直接的影响

    亚里士多德 “事物本质性质和附属性质” -> 致力本质复杂度,去除附属复杂性

    奥姆剃刀原理 -> 如果对一个现象有好几种解释,那么最简单的解释往往是最正确的

    Dietzler定律:即使是通用目的变成语言也逃不出“80-10-10准则”(80%的需求可以很快完成,下一个10%需要花很大的努力才能完成,而最后的10%却几乎是不可能完成的)的魔咒。

    迪米特法则 -> 任何对象都不需要知道与之交互的那些对象的任何内部细节

    关注那些“古老的”软件技术学说。理解已存在的软件学说,能给你提供很好的资源

    6、质疑权威 -> 推行标准是一件好事,但不能盲从标准

    7、元编程 -> 编写“会写程序”的程序

    元编程改变了你的语法词典,给你提供了更多表达自己的方式

    元编程的语言允许开发者使用额外的能力,由开发者决定什么时候使用这些额外的能力

    java与反射

    groovy

    编写连贯接口

    8、组合方法和SLAP(Single Level of Abstraction Principle,单一抽象层次原则)

    重构成组合方法能暴露出隐藏的可复用代码

    TDD实践推动组合方法模式

    9、多语言编程

    10、寻找完美工具

    寻找属于你的完美编辑器,并从里到外去了解它

    你可以使用宏来记录所有重复的文本操作

    可以从命令行调用的

    掌握好正则表达式将为我们节省大量的精力

    如果能够批量处理,就不要来回做重复的工作

    用“真正的”脚本语言去完成自动化任务

    将行为保留在可测试的代码中。xml不应该带有行为特性,行为特性由动态语言来完成

    关注每个小工具的演化

    丢弃错误的工具,尽量少交复杂税

    一些比较实用的工具或软件:

    windows工具:Windows PowerToys、Tweak UI、Virtual Desktop manager

    快速启动软件:launchy、Colibri、Enso。QuickSilver(MacOSX),个人推荐TypeAndRun或AltRun

    Command Prompt Explorer Bar 兼有图形和命令行(ctrl+m)。path Finder(Mac OSX)

    cygwin

    强制快捷键工具:Key Prompter(eclipse、IntelliJ).http://www.mousefeed.com

    键盘宏工具:AutoHotKey

    集中注意力工具:jediconcentrate

    搜索工具:google desktop serch,插件Any Text FileIndexer(可搜索文本内容),UNIX下的find命令,个人推荐Everything

    文件管理工具:subversion、git

    持续集成:CruiseControl、Bamboo、Hudson、TeamCity、LuntBuild

    问题跟踪和WIKI:Trac

    敏捷项目管理:Mingle

    Ant、Gant、Groovy

    UML图生成工具:yDoc

    数据库结构生成工具:SchemaSpy

    代码度量工具:McCabe的圈复杂度(边数-节点数 +2 | 边代表执行路径,节点代表代码的行数)、javaNCSS、Saikuro

    静态分析工具:Findbugs、PMD、CheckStyle、CPD

    统计数据生成工具:Panopticode(包括emma、jdepend、javaNcss、simian、Panopticode Aggregator)

    Jaskell

    昆明java培训机构小编个人经验和实践:

    自动化一切可以自动化的任务和日常工作,不能自动化的也要想尽办法自动化,尽量不要做重复性的工作保持简单和优美,简单即是美

    学会一种动态语言,比如ruby,python,在工作中会有很大的帮助

    善用工具,创造工具

    推荐文章

上一篇:阅读源代码---与高手对话

下一篇:五问Jared Richardson

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56