转自:http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E5%BC%82%E5%91%B3

对于Java开发语言,有些工具,比如CheckstylePMDFindBugs可以自动检测一些代码异味。

常见的代码异味

  • 重复代码: 相同或者相似的代码存在于一个以上的地方。
  • 长方法: 一个非常长的方法、函数或者过程。
  • 巨类: 一个非常庞大的类。
  • 太多的参数: 函数或者过程的冗长的参数列表使得代码可读性和质量非常差。
  • 特性依恋: 一个类过度的使用另一个类的方法。
  • 亲密关系: 一个类依赖另一个类的实现细节。
  • 拒绝继承: 子类以一种‘拒绝’的态度,覆盖基类中的方法,换句话说,子类不想继承父类中的方法,参考Liskov substitution principle
  • 冗余类 / 寄生虫: 一个功能太少的类。
  • 人为的复杂: 在简单设计已经满足需求的时候,强迫使用极度复杂的设计模式。
  • 超长标识符: 尤其,在软件工程中,应该毫无保留的使用命名规则来消除歧义。
  • 超短标识符: 除非很明显,一个变量名应该反映它的功用。
  • 过度使用字面值: 为提高可读性和避免编码错误,应该使用命名常量。此外,字面值可以且应该在可能的情况下,独立存放于资源文件或者脚本中,在软件部署到不同区域时,可以很方便的本地化。

最新文章

  1. JSP动作元素——————实践篇
  2. Monkeyrunner 常用按键
  3. 二十四点算法 java实现
  4. `UnityEditor.EditorUtility' does not contain a definition for `GetMiniThumbnail'
  5. 锤子手机 Smartisan M1L 咖啡金 真皮背面 高配版 5.7
  6. windows下使用ffmpeg进行视频转换和截图。
  7. Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
  8. MySQL SQL优化之in与range查询【转】
  9. android 定制自己的日志工具
  10. 部署ghost博客
  11. UIWebView的使用,简单浏览器的实现
  12. JQuery EasyUi 扩展combox验证
  13. iOS_根据文字字数动态确定Label宽高
  14. CodeForces 616A Comparing Two Long Integers
  15. UnitOfWork实战
  16. MongoDB3.4安装配置以及与Robomongo1.1的连接——解决Authentication Failed导致的不能连接问题
  17. R语言仪表盘
  18. Win10系列:C#应用控件基础21
  19. 深入浅出 JVM GC(4)常用 GC 参数介绍
  20. 反转链表的golang实现

热门文章

  1. postgresql-slony-I同步复制配置步骤
  2. 转:RHEL6.3 安装GCC 记录
  3. 聊聊iClient for Leaflet坐标转换问题
  4. Android开发之语音识别
  5. 配置tomcat的session共享
  6. thinkphp 重写
  7. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
  8. 一起talk C栗子吧(第一百三十一回:C语言实例--C程序内存布局三)
  9. 使用命令行设置树莓派的wifi网络
  10. Memcached真的过时了吗?