如何避免 while、for、if 的滥用?

2022-04-21 10:55:57 +08:00
 ALLROBOT

要是一个方法包含很多 while 、for 、if 或 case 啥,代码不仅丑,维护性又烂,大家咋避免这情况的?

4647 次点击
所在节点    程序员
33 条回复
maninfog
2022-04-21 11:00:45 +08:00
lint 检查?有一项是检查方法复杂度的
villivateur
2022-04-21 11:01:11 +08:00
没懂你的意思,程序不就是由顺序代码、判断、循环组成的嘛?
secondwtq
2022-04-21 11:02:23 +08:00
那当然是换用 goto 啦
evoluc97
2022-04-21 11:03:32 +08:00
多用语法糖
cmdOptionKana
2022-04-21 11:04:45 +08:00
多数情况下可以拆解成小函数。
stillsilly
2022-04-21 11:05:23 +08:00
你的问题可能是不会抽象
谷歌搜一下
herich
2022-04-21 11:05:32 +08:00
套上各种设计模式,消灭 if else, 这样不久之后你的代码就没多少人能看懂了
knir
2022-04-21 11:06:17 +08:00
if 太多就改成表驱动,循环太多就拆成独立的函数
stillsilly
2022-04-21 11:10:27 +08:00
我随手帮你找了 2 篇,可以看一下
https://www.infoq.cn/article/txedztawypmafc41kufq
https://zhuanlan.zhihu.com/p/32563505

另外《代码整洁之道》这本书,第 3 章第 3 小节“每个函数一个抽象层次”是讲抽象的,
这书写得超级好,整本书都值得一读
hikarufighter32
2022-04-21 11:13:29 +08:00
如何避免酱油、醋、盐 的滥用?
GeruzoniAnsasu
2022-04-21 11:13:47 +08:00
1. if() if () 改为 if(not) break

2. 多写一个函数取代第三层以及更里面的嵌套



比起嵌套条件语句,嵌套匿名函数更让人崩溃, .map(()=>{.map(()=>这样的)})
gesse
2022-04-21 11:15:30 +08:00
@secondwtq
嚯~哦~
您搁着开倒车呢? 🐶
TWorldIsNButThis
2022-04-21 11:26:01 +08:00
基本没写过 while
你说的具体是哪个语言?
q1angch0u
2022-04-21 11:33:12 +08:00
@TWorldIsNButThis 您这是 golang 吧 hhh
adoal
2022-04-21 11:33:19 +08:00
写成纯函数式呗
66beta
2022-04-21 11:46:25 +08:00
用 sonar 扫描 可读性复杂度
ALLROBOT
2022-04-21 12:29:37 +08:00
@TWorldIsNButThis #13 python ,C 之类🤣
golangLover
2022-04-21 12:37:15 +08:00
v2ex 标准答案: 能跑就行了
cssk
2022-04-21 12:41:49 +08:00
嵌入式,单片机就应该多用用这些,还要用 goto
fayetitus
2022-04-21 13:35:40 +08:00
你是不是想问:如何降低圈复杂度?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX