要是一个方法包含很多 while 、for 、if 或 case 啥,代码不仅丑,维护性又烂,大家咋避免这情况的?
要是一个方法包含很多 while 、for 、if 或 case 啥,代码不仅丑,维护性又烂,大家咋避免这情况的?
|
maninfogApr 21, 2022 via iPhone
1
lint 检查?有一项是检查方法复杂度的
|
|
2
没懂你的意思,程序不就是由顺序代码、判断、循环组成的嘛?
|
|
3
那当然是换用 goto 啦
|
|
evoluc97Apr 21, 2022
4
多用语法糖
|
|
5
多数情况下可以拆解成小函数。
|
|
stillsillyApr 21, 2022
6
你的问题可能是不会抽象
谷歌搜一下 |
|
7
套上各种设计模式,消灭 if else, 这样不久之后你的代码就没多少人能看懂了
|
|
8
if 太多就改成表驱动,循环太多就拆成独立的函数
|
|
9
我随手帮你找了 2 篇,可以看一下
https://www.infoq.cn/article/txedztawypmafc41kufq https://zhuanlan.zhihu.com/p/32563505 另外《代码整洁之道》这本书,第 3 章第 3 小节“每个函数一个抽象层次”是讲抽象的, 这书写得超级好,整本书都值得一读 |
|
10
如何避免酱油、醋、盐 的滥用?
|
|
11
1. if() if () 改为 if(not) break
2. 多写一个函数取代第三层以及更里面的嵌套 比起嵌套条件语句,嵌套匿名函数更让人崩溃, .map(()=>{.map(()=>这样的)}) |
|
TWorldIsNButThisApr 21, 2022 via iPhone
13
基本没写过 while
你说的具体是哪个语言? |
|
runoApr 21, 2022 via iPhone
14
@TWorldIsNButThis 您这是 golang 吧 hhh
|
|
adoalApr 21, 2022
15
写成纯函数式呗
|
|
66betaApr 21, 2022
16
用 sonar 扫描 可读性复杂度
|
|
17
@TWorldIsNButThis #13 python ,C 之类🤣
|
|
golangLoverApr 21, 2022 via Android
18
v2ex 标准答案: 能跑就行了
|
|
csskApr 21, 2022
19
嵌入式,单片机就应该多用用这些,还要用 goto
|
|
fayetitusApr 21, 2022
20
你是不是想问:如何降低圈复杂度?
|
|
3dwelcomeApr 21, 2022
21
@stillsilly 对我来说,抽象就是把经常变动的部分从代码里踢出去,保留不变的部分。
多次递归后,就形成程序的第一层抽象。而良好的程序,多层抽象组合在一起的。 很多新人需求都没弄明白,一上手就设计模式,有点画蛇添足了。 |
|
zhangjinghuaApr 21, 2022
22
@stillsilly 这本书我认真读过两遍,确实非常不错
|
|
ikasApr 21, 2022
23
while 、for 、if 改成 elihw, rof, if
|
|
24
|
|
25
每种语法都有其适合的情况和不适合的情况,该用啥就用啥。
提高代码的可读性有很多思路; 比如拆分函数,一个入口函数进来就是很清晰的一个任务列表,然后每个任务想看具体实现就看对应子函数的代码; 比如空行和注释,用空行来分割不同代码章节,如果一段代码很复杂,那么没有什么比加几句注释更容易让人理解的。 有时候有人会避免使用 if ,比如函数提前 return ,或者各种三元表达式和逻辑运算,这样虽然代码少了,但同时也难以理解了,因为你要在自己脑海里建立一套状态。我反而十分推荐写 if 的时候尽量写 else ,把所有情况都清晰表达出来,这样也能避免一些逻辑不严谨产生的 bug 。 |
|
DTCPSSApr 21, 2022 via iPhone
26
复杂度不能消灭只能转移…
|
|
27
fp ,多用数组方法,三亩运算
|
|
darerApr 21, 2022
28
多用函数式编程(
|
|
AV1Apr 21, 2022 via Android
29
用数组的 forEach, map, some, every 代替
|
|
ragnaroksApr 21, 2022
30
无非就是防御性编程和响应式编程
|
|
31
只用状态机
|
|
aliveyangApr 21, 2022
32
业务简化了,程序自然就简化了
|
|
fortunezhangApr 22, 2022
33
杀了产品经理
|