坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序的不同部分上工作时.由于他们正在处理不同的任务,他们可能不知道他们的同事已经写了类似的代码. 还有一种更隐晦的重复,特定部分的代码看上去不同但实际在做同一件事.这种重复代码往往难以找到和消除. 有时重复是有目的性的.当急于满足deadline,并且现有代码对于要交付的任务是"几乎正确的"时…
什么时候需要重构,当你在项目代码里面嗅到这个味道的时候,就要进行重构.   首个介绍的味道是重复代码的味道.   它表现出来的特征是这些:   1.一个类里面,两个函数中,含有相同的代码,类似的代码:或者三个函数中,含有相同的代码,类似的代码.这是重复代码的味道.   2.两个互为兄弟的子类内含有相同的表达式.这也是重复代码的味道.   3.两个不相关的类,出现了重复代码.这也是重复代码的味道.     如何处理,如何重构   1.对于两个函数,出现重复代码,使用Extract Method方法…
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/20009689 . 1. 重复代码 (Duplicated Code) 用到的重构方法简介 : Extract Method(提炼函数), Pull Up Method(函数上移), From…
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/20009689 . 1. 重复代码 (Duplicated Code) 用到的重构方法简介 : Extract Method(提炼函数), Pull Up Method(函数上移), From…
DRY(don't repeat yourself),重复往往是代码腐烂的开始,我们一般的处理手法是将重复的代码提取成一个方法,然后用新方法替换掉原来的代码. 但是对于for循环里面的重复代码要如何处理呢?比如有下面2个方法: A.class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public boolean methodA(List<String> list) { for(String string : list) { if (string.st…
发现重复的代码这个提示真的很烦啊,我们怎么关闭他呢. 设置在这里: Settings -> Editor -> Inspections -> General -> Duplicated Code 如图: 对勾去掉,点击OK保存.…
idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包. 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入需要用到的包.但是对于那些同名的包,还是需要手动 Alt + Enter 进行导入的 ============================================…
idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包. 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入需要用到的包.但是对于那些同名的包,还是需要手动 Alt + Enter 进行导入的 关闭重复代码提示: 去掉勾选Duplicated Code即可!…
IDEA中的这个“发现重复代码 - Found duplicated code“的这个提示甚是烦躁. Settings —> Editor —> Inspections —> General —> Duplicated Code…
如果想利用单个类做太多事情,其内往往就会出现太多实例变量.一旦如此,Duplicated Code也就接踵而至.     解决方法:     1.将类内彼此相关的变量,将它们放在一起.使用Extract Class手法,将彼此相关的变量提炼到新的类.     2.如果1中的新类适合作为一个子类,那么可以使用Extract Subclass手法.   11.对于太多代码的处理办法,分解函数,将大函数分解成若干小函数,这样可以消除重复代码.相关的函数,可以跟着变量,一起被提炼到一个新的类中去,使用E…
idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包. 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入需要用到的包.但是对于那些同名的包,还是需要手动 Alt + Enter 进行导入的 ============================================…
USING ACTIONFILTERS TO REMOVE DUPLICATED CODE ASP.NET Core 的过滤器可以让我们在请求管道的特定状态之前或之后运行一些代码.因此如果我们的 action 中有重复验证的话,可以使用它来简化验证操作. 当我们在 action 方法中处理 PUT 或者 POST 请求时,我们需要验证我们的模型对象是否符合我们的预期.作为结果,这将导致我们的验证代码重复,我们希望避免出现这种情况,(基本上,我们应该尽我们所能避免出现任何代码重复.)我们可以在代码…
  使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符一个字符敲还是使用 Visual Studio 提供的Code Snippet 工具自动帮你生成呢?神奇之处 你只需要在代码编辑器中输入for,就会看到 Visual Studio 的自动提示框中出现了如下红框框起来的部分,这个时候只需要连按两下 tab 键,便会自动补全 for 循环语句(如图2所…
可以看到上面代码中的灰色波浪线,特别影响观感,可以看到是因为有了重复代码.不确定它是怎么确定重复代码的. 解决办法: Setting--Editor--Inspections--General---Duplicated Code fragment ,把勾去掉即可. 去除mapper.xml文件的背景色 No data  sources configured 和 SQL dialect detection 去除选择. Injected language fragment 的Background 去…
01,Could not autowire. No beans of 'UserMapper' type found 01.1,问题描述,通过反射动态实现的接口在调用时会出现以上提示,常见的如 ORM 框架的 Dao 层 01.2,该错误不是代码问题,可以手动关闭该错误 01.3,Settings - Editor - Inspections - Spring - Spring Core - Code - Autowiring for Bean Class 01.4,去掉方括号里面的勾选 02,…
IDEA似乎做的太多,对于Mybatis文件中的SQL语法检查可能就没有太大的必要性,Duplicated Code检测其实非常好,但是我测试使用JDBC代码的时候一堆波浪线让我很不舒服 因此将这两个检查关闭.方法如下: File -> Settings -> Editor -> Inspections 分别查找,然后去除勾选…
simian是一个检查重复代码的工具,支持通过命令行和UI方式来检查代码,可以检查多种语言(比如C\C++, java, c#等)的代码,常见的编程语言都支持,下面先来看看如何使用命令行来检查c++重复代码的. E:\temp\simian-\bin>simian-.exe -includes= -formatter=xml:e:\temp\simian1.xml "*.rb" 上面这个命令行的含义是,查找目录D:\code\test\及其子目录下的所有的.hpp文件,找出三行及…
前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大小的手段.以下将讨论CSS代码相关的代码精简方案. 定义简洁的CSS规则 CSS的每条规则中都包含了规则的属性及属性值.定义简洁的CSS规则主要是指合并相关规则和定义简洁的属性值. 1. 合并相关CSS规则 CSS中的某些样式是由多个规则组成的,比如字体样式,就包含:font-family.font…
建议148:不重复代码 如果发现重复的代码,则意味着我们需要整顿一下,在继续前进. 重复的代码让我们的软件行为不一致.举例来说,如果存在两处相同的加密代码.结果在某一天,我们发现加密代码有个小Bug,然后修改了它,却又忘记了角落里的某处存在着一份相同的代码,那么这个Bug就会隐藏起来. 让我们重现这个例子: void PagerEncrypt() { //加密代码 } void AnswerEncrypt() { //相同的加密代码 } 在这段代码中,方法PagerEncrypt和AnswerE…
在开发过程中,程序提供的功能由简单变得复杂,承担功能的主要类也会因此变得庞大臃肿,如果不加以维护,就会散发出浓重的代码味道.下面这篇博文,主要讲述了利用Enum,反射等手段简化重构代码的过程. 代码涉及的工程是一个基于Webhook调用的项目,Webhook可以简单理解为网络上文件和文件夹的创生和监控API,用户可以通过调用API在目标机器上创建文件目录,当它们发生变化时获得提醒. 既然是调用API,以某账户创建webhook为例,返回的可能性就只有三种:目标机器收到指令创建成功.目标机器收到指…
为什么要用 snippets(代码段)? 不管你使用何种编程语言,在我们日常的编码工作中,都会存在有大量的重复代码编写,例如: 日志打印: console.log,log.info('...') 输出到控制台:System.out.println("...."), fmt.Println("...") 循环:switch(...){},for(i := 0, i <= len, i++),for...i 等等 这种模板代码在 java,go 中静态语言会比较多…
工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新. 这篇文章,介绍一下 VS里的 代码片段(Code snippet). 1. 介绍 Code snippet 为可重用的代码片段, 相信使用 VS 的开发者都会经常的使用内置的代码片段,如 class.ctor.prop.if.else.switch.for.foreach.while.using…
上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片.下面我们就来系统说明一下Metalama中的Aspect. Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 本文讲些什么 关于Metalama中Aspect的基础 一些关于Aspect的示例,最终目的是通过本篇的介绍,将在编译时自动为类型添加INotifyPropertyChanged,实现如下效果: 自动添加接口 自动添加接口实现 改写属性的set和get 关于Aspect 在前面的文章…
上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中,我们经常会遇到大量重复或者类似的代码需要编写,当然我们可以通过各种模式来避免这种情况出现,但肯定有些时候我们是无法避免的,那么遇到这种情况,我们该如何快速完成这些重复或类似的代码的编写呢.下面来说一下我的方法,当然,如果大家有更好的方法,希望能分享出来. 大量重复代码--switch/case枚举的…
阅读目录   一:重复的代码 二:C#中通过委托Func消除重复代码 一:重复代码    public class Persion { public string Name { get; set; } public int Age { get; set; } public Persion GetPersionInfo() { try { Persion persion = new Persion(); persion.Name = "David"; persion.Age = ; re…
阅读目录 一:重复的代码  二:使用委托消除重复代码     一:重复的代码    我们在写一些方法的时候,会在里面可能出现异常的地方使用try catch语句,这样每个方法都会有try catch语句,这样就有了坏味道,如下所示,在GetName和GetAge里面都有try catch语句,这样就有了重复代码 static void Main(string[] args) { GetName(); GetAge(); Console.ReadLine(); } private static v…
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:查找无用代码Dead Code的一些心得.…
程序员应该竭尽全力去写那些重复的代码.以下几点是我目前最需要改进的地方. 重复代码: 相同或者相似的代码存在于一个以上的地方. 长方法: 一个非常长的方法.函数或者过程. 巨类: 一个非常庞大的类. 太多的参数: 函数或者过程的冗长的参数列表使得代码可读性和质量非常差. 链接地址:http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E5%BC%82%E5%91%B3…
ANSI编码与代码页(Code Page) 一.ANSI编码 1. 如前所述,在全世界所有国家和民族的文字符号统一编码的Unicode编码方案问世之前,各个国家.民族为了用计算机记录并显示自己的字符,都在ASCII编码方案的基础上,设计了各自的编码方案. 比如欧洲先后设计了EASCII和ISO/IEC 8859系列字符编码方案:为了显示中文及相关字符,中国设计了GB系列编码("GB"为"国标"的汉语拼音首字母缩写,即"国家标准"之意). 同样,日…
一,问题 平时使用WebStorm时需要很多引用js,重复代码比较多,每次都要写很多次同样的代码,那么如何通过几个快捷键来简单的写出重复代码呢? 问题具体描述: 每次都要写两个script的重复: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src=&…