`
flydream
  • 浏览: 806 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

卓有成效的程序员

阅读更多
卓有成效的程序员(书摘)
    --- The Productive Programmer
一.机制
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)
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命令
文件管理工具: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
分享到:
评论

相关推荐

    《卓有成效的程序员》 迷你书

    终身学习和持续的专业发展是成为卓有成效程序员的关键。 6. **沟通与团队合作**:强调软技能如沟通、倾听和协作在项目成功中的作用。有效的沟通可以减少误解,促进团队间的协同工作。 7. **问题解决与调试技巧**:...

    <卓有成效的程序员>

    最后,身心健康也是成为卓有成效程序员的重要因素。长时间的工作可能导致疲劳和压力,因此,平衡工作与生活,定期休息和锻炼,以及培养健康的饮食习惯,都是保持高效工作的前提。 总的来说,《卓有成效的程序员》这...

    《卓有成效的程序员》

    《卓有成效的程序员》是一本面向广大程序员的实践指南,旨在帮助他们提升工作效率和代码质量。这本书结合了多种编程技巧、项目管理策略以及个人生产力的提升方法,为程序员提供了全面而实用的知识。 首先,书中的...

    卓有成效的程序员.pdf

    《卓有成效的程序员》就是讲述如何在开发软件的过程中变得更加高效。同时,《卓有成效的程序员》的讲述将会跨语言和操作系统:很多技巧的讲述都会伴随多种程序语言的例子,并且会跨越三种主要的操作系统,Windows...

    卓有成效的程序员书籍

    卓有成效的程序员卓有成效的程序员卓有成效的程序员卓有成效的程序员

    卓有成效的程序员 卓有成效的程序员

    《卓有成效的程序员》是一本探讨如何提升程序员工作效率和质量的专业书籍,由Neal Ford著,ThoughtWorks(中国)公司翻译。这本书旨在揭示那些高效程序员的思考模式和工作习惯,帮助程序员们提升自身的专业素养,...

    卓有成效的程序员(精选版)

    卓有成效的程序员(精选版) ,PDF格式。 本书是《卓有成效的程序员》的精选版,节选了原书中比较有代表性的四章。这不是一本帮助最终用户更有效率使用计算机的书。这是一本写给程序员、关于如何提高生产效率的书,这...

    卓有成效的程序员 新版下载

    《卓有成效的程序员》迷你书是一本针对程序员提升工作效率和生产力的重要读物。这本书旨在帮助程序员在日常工作中更好地管理时间、优化代码、提升团队协作效率以及掌握有效的学习方法,从而实现个人技能与团队整体...

    《卓有成效的程序员》中文版电子书

    《卓有成效的程序员》是一本面向广大软件开发者的实用指南,旨在帮助他们提升工作效率,优化工作流程,从而在软件开发领域实现更大的成就。这本书深入浅出地探讨了程序员在日常工作中可能遇到的各种问题,并提供了...

    卓有成效的程序员高清完整版

    这是一本少有的高清完整版,此书不看,是程序员的终身遗憾!

    [13]卓有成效的程序员.zip上位机开发VC串口学习资料源码下载

    [13]卓有成效的程序员.zip上位机开发VC串口学习资料源码下载[13]卓有成效的程序员.zip上位机开发VC串口学习资料源码下载[13]卓有成效的程序员.zip上位机开发VC串口学习资料源码下载[13]卓有成效的程序员.zip上位机...

    免费下载-卓有成效的程序员

    标题中的“卓有成效的程序员”是一本书的名字,这本书旨在帮助程序员提升工作效率和产出质量。在编程领域,卓有成效通常意味着能够有效地解决问题,编写出高效、可维护的代码,并且能够持续学习和适应技术的发展。这...

    The Productive Programmer-卓有成效的程序员

    《The Productive Programmer》这本书是为那些希望提升编程效率、改善工作流程的程序员量身定制的指南。书中涵盖了大量实用的技巧、工具和方法,旨在帮助程序员提高生产力,成为更有效的开发者。 首先,书中的核心...

    《卓有成效的程序员》精选版

    卓有成效的程序员 作者 Neal Ford 这不是一本帮助最终用户更有效率使用计算机的书。这是一本写给程序员、关于如何提高生产效率的书,这意味着我可以对读者作很多假设,很多基本概念也不需要浪费很多时间去解释,...

Global site tag (gtag.js) - Google Analytics