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