php网站数据库怎样导入,如何做家乡网站,企业品牌形象设计,炎推小说推广下载今天#xff0c;Venkat Subramaniam 就关于清除代码异味的话题给我们做了一个非常有趣的演讲。下面就是我记录的一些他的话。 为什么我们需要有质量的代码#xff1f; 敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。如果程序没有用一种好的表达方式来表现Venkat Subramaniam 就关于清除代码异味的话题给我们做了一个非常有趣的演讲。下面就是我记录的一些他的话。 为什么我们需要有质量的代码 敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。如果程序没有用一种好的表达方式来表现那程序会很难读难维护难修改。什么是代码异味 代码异味是一种由写的很差的代码引起的一种有臭味的感觉一种程序什么地方会有问题的感觉异味更多的是来自一种直觉而不是一种有据可查的标准当你看到有味的代码时你就“感觉”到了如果你不把异味清除不久之后你就会习惯这种气味不再对它有察觉用任何语言都能写出有异味的代码即使最简单安全的语言你也能做出天才才能想出的蠢事:)我们经常会意识不到自己在写很臭的代码经常需要外人为我们指出这点 边注如果你不想刻意去批评某人的程序不要说“太愚蠢了”要说“哦这很有意思…。可有一种更好的方法你知道吗重复的代码 会引起程序里面多个地方相同的错误印度小伙每两个月我们都会把这相同的错误修改一次Venkat你们去掉了重复的代码了吗印度小伙你说的这个方法不错不必要的复杂 程序员本质上讲高兴去处理复杂的问题复杂最恐怖异常处理 问有什么比一个空的异常捕捉代码更糟糕的 try { ... } catch (Exception e) { } 答一个带有注释的空异常捕捉代码 try { ... } catch (Exception e) { // is this required? } Java的异常检查好还是不好如果你不想处理一个异常就把它传递下去如果你想捕捉两个异常使用两个catch代码不要只写一个而用If条件处理Switch语句 按类型的条件判断 Switch语句和按类型的条件判断通常可以用多形性来代替长方法 你不能在一屏上看到整个方法这通常意味着一个方法承担这多重任务难于调试不可测试难于重用 - 导致程序员从方法的其它地方拷贝粘贴出重复的代码复杂的条件语句 - 挑战大脑的逻辑分析能力方法长度组织归纳水平比控制代码行数更重要方法组成模式 方法里的所有语句都必须处在同一个归纳层次上无用的注释 让代码自我表白标注为什么这样而不是如何这样对方法表现进行描述等于重复表现这样的注释等于重复写一遍代码 i 1 // 递增 长方法里用来描述这个方法有不同的功用的注释 把里面的功能片段提取成小方法 删除注释IDE排泄物IDE自动产生的注释空白占位符糟糕的注释通常产生于TDD* * (TDDThreat driven development恐吓驱动开发)—— 你应该为方法的表象写注释你应该为长方法写注释等产品里的注释 // 上帝保佑我实在不知道这是什么意思 变量名称 使用能表意的名称不要用单个字母做名称也不要使用太长的名称继承 继承更多的是被滥用了组合通常优于继承在一对一关系中使用继承满足Liskov替换原则不要用继承来实现方法重用重用方法时委托是个更好的选择粘手的语言 这种语言更容易导致犯错误最臭的代码 冗长的类重复的代码淘汰的方法不必要的塑型(cast)过度使用设计模式代码除味 代码复查 写出之后尽快进行要增量进行要复查测试用例可使用结对编程 但要保持结对伙伴的经常变动否则你会习惯你的气味不再会有察觉结对伙伴一、两天调换一一些设计原则 高聚合低耦合Demeter定律 [不要告诉我我会通知你]Liskov替换原则先让它跑起来再让它无误再让它快速开发/闭合原则反向依赖单一责任原则一些参考书籍 代码整洁之道(Clean Code)代码大全(Code Complete) 2程序员修炼之道(The Pragmatic Programmer)敏捷开发修炼之道(Practices of an Agile Developer)Smalltalk Best Practice Patterns实现模式(Implementation Patterns) (from protoiyer)问和答 关于使用代码检测工具例如PMD这样的工具非常的有用它能让你捕捉到很直接的问题使你的代码复查工作专注于高层面的设计原则问题关于IDE上附加的工具不要自己去运行它们。让这些工具在后台自动的运行(或智能化)动态语言里需要重构吗动态语言里没有太多的自动重构工具但程序员仍然应该手动的重构关于动态语言的设计模式每种语言都有自己的模式和特色。例如smalltalk的execute around method模式关于掌握多种语言 你应该知道处理一个问题的多种范式多种风格和多种方式一种语言中学到的特色方法应用到其它语言里知道各种不同方式的各自风险关于编程语言趋势对函数性编程移动设备编程兴趣浓厚关于著书长时间的思考书中的各项主题多做这方面话题的讨论吸取精华。当开始动手去写时已经胸有成竹2周内把书写成关于思考文献思考文献很有用但你也要多看看批评性的思考性文章它们是关于你如何去思考的(double loop learning?)关于学习在用户组里跟其它人合作交流讨论。你并不能学到所有的东西但要努力缩小自己的“你不知道你不知道的东西”让它成为“你知道你不知道的”原文http://www.aqee.net/2011/05/18/cleaning-up-code-smells/ 转载于:https://www.cnblogs.com/helenR/p/code_smell.html