当前位置:网站首页>Method of code refactoring -- Analysis of method refactoring
Method of code refactoring -- Analysis of method refactoring
2020-11-06 21:35:00 【Irving the procedural ape】
The method of code refactoring —— Method reconstruction analysis
Intro
Want to write better code , You need to be alert to bad smells in your code , Today I want to write an article about how to analyze whether your method needs to consider refactoring
A method usually consists of three parts , Input (Input), Output (Output), Method body (Method Body), We will analyze whether a method should consider refactoring from these three aspects
Input
Method input is the parameter of the method , Generally speaking, the parameters of a method can be basically controlled in 7 Within a ( For reference only , You can measure it by yourself ,SonarQube The default method has up to seven parameters ), If your method has too many parameters , You may need to consider refactoring a method parameter , The usual practice is to encapsulate a separate model, Parameters as model Properties of .
Take a common example , Like a news list API, It can be very simple at first , Just one lastId, One count Two parameters , But as business needs increase , Many other parameters may be added , For example, the front end provides a keyword Full text search , Provide a sortBy Sort , Match the news headlines , Author name matches , Classification matching , Filter according to the release time and so on , In the end, there may be many parameters for this method
Usually I add a new one XxxRequest Of model, Then replace the method parameter with this model, Then designate [FromQuery] That's all right. , You can compare the difference before and after a modification , Is the latter way more refreshing
Task<IActionResult> List(int lastId, int count, string title, string author, string keyword, int categoryId, string sortBy, DateTime? beginTime, DateTime? endTime)
Task<IActionResult> List([FromQuery]NewsListQueryRequest request)
Output
Output Is the return value of the method , Return as many specific types as possible , Try to avoid using Tuple Other types , The return value of the method should have a clear meaning
Use specific Model Instead of Tuple Return value , Especially some public Of , Methods to be accessed externally should return specific types , although C# 7.2 Started to support named tuple, It's going to be a lot more friendly than before , Support to tuple Specify a name , But it's just compiler level , Actually, it's still Item1,Item2 ..., It is recommended to use specific ones model, More clearly
Body
Usually a method is not too long , I saw a group of friends make complaints about more than 2000 ways in the group , This is a disaster to maintain , Don't make a method too long , Keep the cube simple , Some general logic goes through Filter Or combine AOP To achieve
Sonar There is a way to analyze the complexity of a method , Officially called Cognitive Complexity
A brief introduction , In code if/switch/for/foreach/try...catch/while Will increase the complexity of the method , If there is a layer of nesting, the complexity will be increased 1, Sonar The default complexity of a method cannot exceed 15
Here are a few simple examples :
The complexity of the following method is 3, There are three if(else) Branch
版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢
边栏推荐
- An article takes you to understand CSS gradient knowledge
- What is the purchasing supplier system? Solution of purchasing supplier management platform
- Zero basis to build a web search engine of its own
- Python 100 cases
- Summary of front-end interview questions (C, s, s) that front-end engineers need to understand (2)
- 【涂鸦物联网足迹】涂鸦云平台全景介绍
- File download manager realized by electron
- To teach you to easily understand the basic usage of Vue codemirror: mainly to achieve code editing, verification prompt, code formatting
- Introduction to Huawei cloud micro certification examination
- Elasticsearch database | elasticsearch-7.5.0 application construction
猜你喜欢

【学习】接口测试用例编写和测试关注点

Zhou Jie: database system of East China Normal University

2020-09-09:裸写算法:两个线程轮流打印数字1-100。

Digital city responds to relevant national policies and vigorously develops the construction of digital twin platform

Filecoin has completed a major upgrade and achieved four major project progress!

行为型模式之备忘录模式

ORA-02292: 违反完整约束条件 (MIDBJDEV2.SYS_C0020757) - 已找到子记录

Zero basis to build a web search engine of its own

How to manage the authority of database account?

C and C / C + + mixed programming series 5 - GC collaboration of memory management
随机推荐
All the way, I was forced to talk about C code debugging skills and remote debugging
How to manage the authority of database account?
jenkins安装部署过程简记
This project allows you to quickly learn about a programming language in a few minutes
Understanding formatting principles
How much disk space does a new empty file take?
迅为iMX6开发板-设备树内核-menuconfig的使用
Introduction to the development of small game cloud
es创建新的索引库并拷贝旧的索引库 实践亲测有效!
JVM memory allocation - xms128m - xmx512m - XX: permsize = 128M - XX: maxpermsize = 512M
Why is the LS command stuck when there are too many files?
2020-08-19:TCP是通过什么机制保障可靠性的?
NAND FLASH的接口控制设计
How about small and medium-sized enterprises choose shared office?
大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
Road to simple HTML + JS to achieve the most simple game Tetris
What grammar is it? ]
Visual rolling [contrast beauty]
[byte jumps, autumn recruitment Posts open] ohayoo! Don't leave after school, I want to ask you to play games!!!
The legality of IPFs / filecoin: protecting personal privacy from disclosure