




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*,2006-07-10,高效能的编程,大纲,成为高效能程序员的目的 高效能程序员的特征 高效能程序员的理念 高效能程序员的工具箱,成为高效能的程序员,正如企业的目的是挣钱(成本,库存,资金流通,销售额),而程序员的目的是在有限的时间内增加自己的代码产出量(复用,质量,风格) 什么才是一个好的程序员(质量 or 效率)? 怎样才能成为更好,更高效,更优秀的程序员?,目前的问题,1.解决bug,复现错误,跟踪代码(故障机制) 2.基础组件的更改,影响自己的代码(持续集成) 3.修改一处代码,引发更多错误(覆盖测试) 4.签入代码,但安装盘不可用(自动化脚本) 5.一处代码,多处拷贝(重复的危害),高效能程序员必须具备的,关心自己的技艺 Think in work! 好奇,批判的思考者,批判的分析你读到的和听到的 多才多艺,熟悉广泛的技术和环境 善于利用和制造各种工具 持续的改进 有效的交流,高效能程序员的理念,不要容忍破窗户,做变化的催化剂 不要试图隐藏自己的弱点,要诚实和坦率 DRY-Dont Repeat Yourself 无处不在的自动化 留心大图景,持续不断的观察周围发生的事情(煮熟的青蛙) 定期为你的知识资产投资,重复的产生,1.信息的多种表示(数据库表和类结构) 2.代码中的文档(注释) 3.文档和代码 4.无耐性的重复(捷径但不有效,如软件版本号) 5.开发者之间的重复(如日志记录机制,需要主动交流),无处不在的自动化,重复与枯燥的事应该让机器来做 人容易出错与没有耐心 机器适合做这些事 让机器一次重复地、自动地做所需要的事 任何重复的事都是可以自动化的 先有思想才会有行动,自动化的思路,用自动化的思路来思考软件过程 在开发过程中有哪些事情总是重复且枯燥,而不情愿去做? 在哪些重复的事因为你不情愿去做,而会对你的开发过程造成不好的影响? 有哪些事情你是希望能用机器帮你做到,而可以一劳永逸的方便地执行? 找出来,并尽量自动化它们,哪些是可以自动化的?,编译、构建 文档 测试 代码生成 发布 源代码控制 配制,基本工具箱,1.纯文本的威力-储存知识的最佳格式 保证不过时; 易于理解维护; 2.精通一种编辑器,将其用于所有的编辑任务(代码;文档;配置项;脚本等),如ultraedit, editplus 3.使用shell 鼠标vs键盘,基本工具箱(续),代码风格检查(FxCop) Resharper(去除一些C代码中的不良代码) 自动测试(NUnit) 持续集成(CruiseControl) 文档自动生成(NDoc),鼠标vs键盘,启动一个notepad用多少次操作 鼠标新手:开始-程序-附件-记事本(4) 鼠标高手:桌面-快捷方式(2) 鼠标高高手:点击快捷栏上的快捷方式(1) 键盘新手:win+R-notepad(2) 键盘高手:Ctrl+Alt+N(1) 相同? 使用鼠标时手要离开键盘,并回来、,脚本的力量,GUI的程序永远都是一个一个的单独实体 如果需要完成GUI程序一开始没有提供的功能,你只能扩展它(如果它提供)或者重写一个,或者再找一个比它更好的 脚本可以快速与任意的组合完成一些用鼠标很难完成的工作 可重复,并且自动化,只有写一次,而后方便的执行,不用每次都做重复的鼠标操作 学习Shell是每一个关注自动化的、高效率程序员的必修课,脚本威力示例,找出修改日期比你的makefile更近的全部.c文件? GUI: 资源管理器-目录-点击makefile-记下修改时间-查找-*.c-选项-输入日期-确定 或者:资源管理器-目录-查找-*.c-结果中排序 脚本:find . name *.c newer Makefile print,练习题,怎样来注册某一个目录下中所有子文件夹中的ocx文件 一次停掉或开启多个Windows服务 一次修改多个环境变量 如果定时的运行或个程序,我们日常工作中修改BUG的步骤是怎样的?,在IDE里编辑代码 可能会需要点击check out的提示确定按钮 点击编译按钮,或者是击打它的快捷键 如果有错,则改正它 在应用或者测试工程中测试刚才的功能 提交代码,选择并点击check in按钮 修改接口文档(如果需要的话),自动化的场景,在IDE(或者任何你喜爱的编辑器)中编辑代码 按下自动化的快捷键按钮 机器自动的帮你编译、测试与提交代码并生成文档 如果出错则继续 否则、就没有了,如果发现BUG(日常),打开源代码工程,重现它 设定断点 在调试状态重现它 跟踪 找到BUG 除错 再测试(如果耐心足够进行一部分回归测试) 提交 如果需要更改接口文档(如果你还没有忘记),如果发现BUG(自动化),根据错误的自动收集(日志)发现问题所在 大概的定位并重现(调试)它 用单元测试描述它 除错 自动化完成 机器帮你编译、测试、提交代码、生成文档并进行所有的回归测试,错误收集的自动化,错误的重现最重要的是数据与场景 日志与收集 产品版本 OS与IE版本 故障的文件与行号 异常信息 错误类型的唯一编码,文档自动化,NDoc doxgen,测试自动化,单元测试(NUnit) 集成测试 GUI自动化测试(robot) 性能测试 压力测试(Loadrunner) 一个bug只抓一次 举例NUnit,风格?品格?性格?,你的代码太有风格了,我能一眼就看出哪一段是你写的、 Hum?为什么有的函数用小写,而有的用大写,为什么有的变量用m_开始,而有的没有?那用H_开头是什么意思? 噢,m_开头的那个是A写的,他以前用VC,而没有的是B写的,她喜欢java,H_自然是老黄写的,那是他的标志,风格检查,Code review 风格可以有很多种,但是一个团队最好只有一种 混合的风格是最坏的风格 让工具自动为你做出提示或警告 Checkstyle、 FxCop、clint 静态的代码分析是额外的收获,日常回忆(1),喂!我的组件怎么不能用了,昨天我还是能用的,你们做过些什么了? 噢,我几天前修改了一个BUG,并改了一个接口;因为、我只能这样做 天,我的组件可是需要今天提交的,你怎么不早点告诉我?(愤然并无奈的却修改代码),日常回忆(2),嘿,我让你加的那个新的功能你可否做了?我等着它实现我的任务呢! 做了,你没有看到吗? 没有啊,你来看看! 噢,你用的版本不对,请到、上拷一下最近的 我什么时候总能得到你最新的版本? 嗯,这个嘛、,持续集成,上面的回忆你曾经拥有过吗? 如果答案是肯定的,那你肯定应该使用持续集成 持续集成又称为每日构造(daily build) 所有的源代码都在很短的周期内(几个小时-1天)之中从头构造与集成 早崩溃优于最后才知道,持续集成要完成的基本内容,将所有源代码保存在单一地点,让所有人能从这里获取最新的源代码(和以前版本) 使创建过程完全自动化,让任何人都可以只输入一条命令就完成系统的创建 确保所有人都可得到最新、最好的可执行文件,一次持续集成成功的标准,所有最新的源代码都被配置管理系统验证合格 所有文件都通过重新编译 得到的目标文件都通过链接,得到可执行文件 运行所有的单元测试代码和其他的自动化测试脚本,CruiseControl(.NET),CC与CVS、SVN、ClearCase CC与NANT CC与NUNIT CC与NCover CC与FxCop CC与Simian,练习题,写一个简单NANT脚本显示Hello world!,并运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内训师课件评选
- 化学污水处理安全培训课件
- 化学实验安全知识培训课件
- 内科心电监护课件
- 活性物质抑菌机制-洞察及研究
- 识字4田家四季歌 +公开课一等奖创新教学设计
- 内河基本安全知识培训课件
- 红细胞特殊结构与功能特性
- 勾股定理课件
- 内容创作与传播方式
- 建设工程监理安全资料(完整版)
- 城区绿地养护服务费项目成本预算绩效分析报告
- 职称英语A级词汇大全
- 高考英语688高频词汇excel版
- 圆度、圆柱度测量仪校准规范
- 第五章牛顿运动定律之板块模型问题专题课件高一上学期物理
- 表面活性剂的基本作用
- 员工网络安全责任书
- 工程建设项目审批流程图(政府投资工程建设项目(市政类线性项目))
- 士林变频器说明书SL
- 博雅汉语准中级加速篇1
评论
0/150
提交评论