首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)

过长函数(Long Method) 用到的重构方法 : Extract Method(提炼函数), Replace Temp with Query(以查询取代临时变量), Introduce Parameter..., 并以代码的用途命名; -- 关键 : 函数长度不是关键, 关键在于 函数 是 "做什么", 和 "如何做"; 常用分解方法 : Extract Method(提炼函数) 适用于 99% 的过长函数情况...: 使用 Introduce Parameter Object(引入参数对象) 和 Preserve Whole Object(保持对象完整) 方法 可以将过长的参数列变得简洁一些; -- 杀手锏 :...如果使用了上面 消除临时变量和过长参数的方法之后, 还存在很多 参数 和 临时变量, 此时就可以使用 Replace Method with Method Object(以函数对象取代函数方法) ;..., 也要将其提炼到函数中; -- 条件表达式 : 当 if else 语句, 或者 while 语句的条件表达式过长的时候, 可以使用Decompose Conditional(分解条件表达式) 方法,

57810
您找到你想要的搜索结果了吗?
是的
没有找到

list过长导致CPU消耗过高的问题分析

如果其中某一个回调函数执行时间过长,就会长时间占用锁,造成其他的link->doit回调函数block住更长的时间,那么锁的消耗也会更高。...再结合其他的代码逻辑可以发现,__tcf_chain_get函数就刚好在某一个回调函数的路径上。...计算热点代码的路径 ffffffff8161ab40+1d= ffffffff8161ab5d 所以执行addr2line -e /usr/lib/debug/vmlinux-4.19 -a 0xffffffff8161ab5d...index结构在tcf_chain结构体中偏移0x20,为什么反汇编的代码在0x18上?...list的地址-0x8,index的地址是在chain+0x20,那么index的地址相对于list的地址就是+0x18,计算chain的过程都被编译器优化掉了,只需要使用list的地址+0x18即可完成代码逻辑中的遍历过程

1.7K31

python表白代码-表白python代码

闲话少说,让我们来欣赏这些代码吧~01 委婉的表白! python代码: 以下的数字对应的是ascii码: python一行代码实现心形: 效果图:?...2准备这个代码仍然是用简单的python编写的,用到的模块也只有小编以往多次使用pygame,其下载方式依然是用pip安装。 只需要在命令行运行以下代码安装即可。...pip install pygame3详细… (暗指他对比过多种编程语言,但还是觉得 python最简单)”但我想这就是 python.”单线迷宫cmd 命令下输入下列代码实现单线迷宫。...一行代码… 点进去发现一行python代码可以做这么多丧心病狂的功能! 整理了一下知乎上这篇文章的内容,颇觉有趣,分享给大家。...3一行代码表白爱情print(n.join( … 点进去发现一行python代码可以做这么多丧心病狂的功能! 整理了一下知乎上这篇文章的内容,颇觉有趣,分享给大家。

2.6K50

Roslyn 使用 WriteLinesToFile 解决参数过长无法传入

通过阅读本文,大家可以学会怎么写出一些神奇的代码。 任务的背景是,在编译的过程,暗中修改一些代码,而且让开发者发现不了。 最简单的方法就是修改编译流程,修改编译流程是相对比较复杂的。...我很负责和大家说,会的,如果现在不修改代码直接调用就会出现读取到的文件可能是空的 还记得 DependsOnTargets 这个属性?...通过这个属性可以指定一个 Target 在什么时候运行,在运行辅助程序的代码就需要依赖上面的代码运行。...严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB3491 未能向文件“obj\Debug\netcoreapp2.0\lindexi\Items.txt”写入命令行。...测试项目请点击 Roslyn 使用 WriteLinesToFile 解决参数过长无法传入 1.0-CSDN下载 参见: 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) -

63020

Roslyn 使用 WriteLinesToFile 解决参数过长无法传入

通过阅读本文,大家可以学会怎么写出一些神奇的代码。 任务的背景是,在编译的过程,暗中修改一些代码,而且让开发者发现不了。 最简单的方法就是修改编译流程,修改编译流程是相对比较复杂的。...我很负责和大家说,会的,如果现在不修改代码直接调用就会出现读取到的文件可能是空的 还记得 DependsOnTargets 这个属性?...通过这个属性可以指定一个 Target 在什么时候运行,在运行辅助程序的代码就需要依赖上面的代码运行。...严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB3491 未能向文件“obj\Debug\netcoreapp2.0\lindexi\Items.txt”写入命令行。...测试项目请点击 Roslyn 使用 WriteLinesToFile 解决参数过长无法传入 1.0-CSDN下载 参见: 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) -

78030

Python常用代码_python画图代码大全

原标题:30 个 Python 常用极简代码,拿走就用 文章转自:Python程序员 学 Python 怎样才最快,当然是实战各种小项目, 只有自己去想与写,才记得住规则。...本文是 30 个极简任务,初学者可以尝试着自己实现;本文同样也是 30 段代码Python 开发者也可以看看是不是有没想到的用法。...a = 3 print( 2< a < 8) # True print( 1== a < 2)# False 11 逗号连接 下面的代码可以将列表连接成单个字符串,且每一个元素间的分隔方式设置为了逗号。...returnc a={ ‘x’: 1, ‘y’: 2} b={ ‘y’: 3, ‘z’: 4} print(merge_two_dicts(a,b)) #{ ‘y’: 3, ‘x’: 1, ‘z’: 4} 在 Python...‘Value’, ‘b’, ‘Index ‘, 1) # ( ‘Value’, ‘c’, ‘Index ‘, 2) # ( ‘Value’, ‘d’, ‘Index ‘, 3) 22 执行时间 如下代码块可以用来计算执行特定代码所花费的时间

2.9K20
领券