卓有成效的程序员

卓有成效的程序员(书摘)
--- 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
内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值