《03-编程价值观.ppt》由会员分享,可在线阅读,更多相关《03-编程价值观.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Evolve by case 编程的价值观编程的价值观Topic编程价值观编程价值观百家争鸣百家争鸣什么是好的代码呢?Edward Yourdon&Larry L.Constantine 30年前评价标准的背后动机评价标准的背后动机-关注开发总成本关注开发总成本软件系统维护工作量所占的比重超出想象!代码要人能够读懂-Martion Fowler任何一个傻瓜都能写出机器能懂的代码,好的程序员应该写出人任何一个傻瓜都能写出机器能懂的代码,好的程序员应该写出人能懂的代码能懂的代码 Martin Fowler 重构破译密码-复杂表达式的破译请在5分钟之内,试着填写程序员要有这种意识程序员要有这种意识-
2、写烂代码要遭报应写烂代码要遭报应!编程的时候,总是想着那个维护你代码的人会是一个知道你住在编程的时候,总是想着那个维护你代码的人会是一个知道你住在哪儿的有暴力倾向的精神病患者。哪儿的有暴力倾向的精神病患者。”Martin Golding软件代码3项职责-Robert C Martin 第1职责:运行起来所完成的功能,这是模块存在的原因.第2职责:要和阅读它的人进行沟通,对模块不熟悉的人员应该能够比较容易理解.第3职责:它要应对变化,因为软件要变化,开发者保证应该尽可能的简单.编程价值观价值观是编程过程的统一支配性主题价值观是编程过程的统一支配性主题.有有3 3个价值观个价值观:4沟通沟通-珍视
3、与他人沟通的重要性珍视与他人沟通的重要性4简单简单把多余的的复杂性去掉把多余的的复杂性去掉4灵活灵活-保持开放保持开放,应对变化应对变化-Kent Beck-Kent Beck语。语。随着年龄的增长,我逐渐意识到编程不仅仅是让程序运行而已;随着年龄的增长,我逐渐意识到编程不仅仅是让程序运行而已;编程是创造一个易于理解的、可以维护的、高效的作品。一般来编程是创造一个易于理解的、可以维护的、高效的作品。一般来说,干净整洁的代码,往往运行起来更快。这与流行观点正好相说,干净整洁的代码,往往运行起来更快。这与流行观点正好相反。而且即使它们不快,也可以很容易地让它们变快。正如人们反。而且即使它们不快,也
4、可以很容易地让它们变快。正如人们所说的,优化正确的代码比改正优化过的代码容易多了。所说的,优化正确的代码比改正优化过的代码容易多了。Google公司首席Java架构师JoshuaBloch 案例素数如何重构重构成多少个函数?编程的理论l模式描述了要做什么模式描述了要做什么,价值观提供了动机价值观提供了动机,原则把动机转化成了实际的行动原则把动机转化成了实际的行动.l不同的价值观和不同的原则会产生不同的方式不同的价值观和不同的原则会产生不同的方式.Topic代码质量的评价标准代码质量的评价标准整洁代码整洁代码百家争鸣百家争鸣Bjarne Stroustrup,inventor of C+and
5、author of The C+我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。整洁的代码只做好一件事。Grady Booch,Object Oriented Analysis and Design with Applications 整洁的代码简单直接整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句“老大”Dave Thomas,OTI公司创始人,Eclipse战
6、略教父 整洁的代码应可由作者之外的开发者阅读和增补。它应当有单元测试和验收测试。它使用有意义的命名。它只提供一种而非它只提供一种而非多种做一件事的途径多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。Michael Feathers,Working Effectively with Legacy Code 我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的。整洁的代码总是看起来像是某位特别在意它的人写的。整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有
7、改进的余地几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码全心投入的某人留下的代码。The important point is that the cost of adding a feature isnt just the time it takes to code it.The cost also includes the addition of an obstacle to future expansion.增加一个功能特性的成本并不单单是为这些功能编码所花费时增加一个功能特性的成本并不单单是为这些功能编码所花费时间的成本,还这个成本应该包括特性扩展的障碍成本。间的成本,还这个成本应该包括特性扩展的障碍成本。John Carmack,computer game programmer