代码重构之法——方法重构分析
代码重构之法——方法重构分析Intro想要写出比较优秀的代码,需要时刻警惕代码中的坏味道,今天想写一篇文章介绍一下如何分析你的方法是不是需要考虑重构 一个方法通常有三个部分组成,输入(Input),输出(Output),方法体(Method Body),我们就从这三个方面来分析一个方法是否该考虑重构 Input方法输入也就是方法的参数,通常来说一个方法的参数基本可以控制在7个以内(仅作参考,可以自己衡量, 举一个常见的例子,比如一个新闻列表的API,起初可能很简单,就只需要一个 通常我会新增一个
OutputOutput 就是方法的返回值,尽可能返回具体的类型,尽可能避免使用 使用具体的 Model 代替 Tuple 返回值,尤其是一些 public 的,要被外部访问的方法更应该返回具体的类型,虽然 C# 7.2 开始支持了 named tuple,会比之前友好很多,支持给 tuple 指定名称,但是这只是编译器级别的,实际还是 Item1,Item2 ...,还是比较推荐使用具体的 model,更加明了 Body通常一个方法不要太长,曾经在群里看到群友吐槽一个方法两千多行,这样的方法维护起来简直就是灾难,不要让一个方法太长,保持方体体的简单,一些通用的逻辑通过 Filter 或结合 AOP 来实现 Sonar 有一个分析方法复杂度的一个方法,官方称之为 Cognitive Complexity 简单介绍一下,代码里的 来几个简单的示例: 下面这个方法的复杂度是 3,有三个 if(else) 分支
下面这个方法的复杂度是 3,
下面这个方法的复杂度在上面的基础上增加了两个
更多示例可以参考官方介绍: https://www.sonarsource.com/docs/CognitiveComplexity.pdf Reduce Complexity前面我们介绍了一些复杂度的分析,如何能够切实有效的降低方法的复杂度呢:
More除了自己主动感知方法的复杂度之外,我们也可以借助一些第三方的静态代码分析工具来分析我们的代码,从而获得一些修改建议进而保证代码的高质量。 SonarQube 是目前使用较多的工具,可以方便的和 CI 集成,有一个 SonarCloud 网站提供云服务,可以轻松为你的开源项目集成静态代码分析,有兴趣可以看看,地址是 https://sonarcloud.io/,之前还用过 Reference
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC:如果视图有错误,如何发出编译
- asp.net-mvc-3 – Asp.net MVC3从razor View访问内部类
- asp.net – Ajax上的Identity Server 3 – 401而不是302
- asp.net-mvc – 如何将Model字段值传递给javascript变量?
- asp.net-mvc-4 – 什么是antlr3,为什么默认情况下在VS2012
- asp.net-mvc – “继承”ASP.NET MVC网站从一个常见的模板应
- 在ASP.NET中更改doctype
- asp.net中让Repeater和GridView支持DataPager分页
- c#中分布方法和分部类
- 中国网通新版400电话 - 企业直线
- aspx.cs页面中的ASP.NET Webmethod无法访问Page.
- asp.net-mvc – 处理.NET MVC 2动作过滤器时的执
- kendo-ui – 剑道网格刷新(数据绑定两次)
- asp.net – IIdentity,IPrincipal,OWIN,Identity
- Asp.net core利用IIS在windows上进行托管步骤详解
- asp-classic – ASP中的Access-Control-Allow-Or
- 使用Route Id值的ASP.NET MVC 3 Model Id
- asp.net – Visual Studio 2013更改现有项目的身
- asp.net-mvc – 如何在MVC中显示图像
- asp.net-mvc – 具有Microsoft.AspNet.Identity的