《高效能的编程》PPT课件

上传人:ch****o 文档编号:244825819 上传时间:2024-10-06 格式:PPT 页数:38 大小:943.50KB
返回 下载 相关 举报
《高效能的编程》PPT课件_第1页
第1页 / 共38页
《高效能的编程》PPT课件_第2页
第2页 / 共38页
《高效能的编程》PPT课件_第3页
第3页 / 共38页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,2006-07-10,高效能的编程,大纲,成为高效能程序员的目的,高效能程序员的特征,高效能程序员的理念,高效能程序员的工具箱,成为高效能的程序员,正如企业的目的是挣钱(成本,库存,资金流通,销售额),而程序员的目的是在有限的时间内增加自己的代码产出量(复用,质量,风格),什么才是一个好的程序员(质量 or 效率)?,怎样才能成为更好,更高效,更优秀的程序员?,目前的问题,1.解决bug,复现错误,跟踪代码(故障机制),2.基础组件的更改,影响自己的代码(持续集成),3.修改一处代码,引发更多错误(覆盖测试),4.签入代码,但安装盘不可用(自动化脚本),5.一处代码,多处拷贝(重复的危害),高效能程序员必须具备的,关心自己的技艺,Think in work!,好奇,批判的思考者,批判的分析你读到的和听到的,多才多艺,熟悉广泛的技术和环境,善于利用和制造各种工具,持续的改进,有效的交流,高效能程序员的理念,不要容忍破窗户,做变化的催化剂,不要试图隐藏自己的弱点,要诚实和坦率,DRY-,D,ont,R,epeat,Y,ourself,无处不在的自动化,留心大图景,持续不断的观察周围发生的事情(煮熟的青蛙),定期为你的知识资产投资,重复的产生,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!,并运行它。,用NANT来编译一个C#工程,用NANT来运行NUNIT测试,Enjoy it!,从现在开始,想想自己曾经重复做过的事?它是否可以被自动化?用什么方法可能做到这一点?,决定在一年之内学会一种语言,并用它来改进自己的编程能力,每个季度,阅读一本技术类或者非技术类的书籍,提高我们的产能,享受我们的生活,Q&A,谢谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!