要是一个方法包含很多 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 ![]() 没懂你的意思,程序不就是由顺序代码、判断、循环组成的嘛? |
![]() | 3 secondwtq 2022-04-21 11:02:23 +08:00 ![]() 那当然是换用 goto 啦 |
4 evoluc97 2022-04-21 11:03:32 +08:00 多用语法糖 |
![]() | 5 cmdOptionKana 2022-04-21 11:04:45 +08:00 ![]() 多数情况下可以拆解成小函数。 |
![]() | 6 stillsilly 2022-04-21 11:05:23 +08:00 你的问题可能是不会抽象 谷歌搜一下 |
![]() | ![]() 套上各种设计模式,消灭 if else, 这样不久之后你的代码就没多少人能看懂了 |
8 knir 2022-04-21 11:06:17 +08:00 ![]() if 太多就改成表驱动,循环太多就拆成独立的函数 |
![]() | 9 stillsilly 2022-04-21 11:10:27 +08:00 ![]() 我随手帮你找了 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 ![]() 如何避免酱油、醋、盐 的滥用? |
11 GeruzoniAnsasu 2022-04-21 11:13:47 +08:00 ![]() 1. if() if () 改为 if(not) break 2. 多写一个函数取代第三层以及更里面的嵌套 比起嵌套条件语句,嵌套匿名函数更让人崩溃, .map(()=>{.map(()=>这样的)}) |
13 TWorldIsNButThis 2022-04-21 11:26:01 +08:00 via iPhone 基本没写过 while 你说的具体是哪个语言? |
![]() | 14 ryanbuu 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 ![]() 每种语法都有其适合的情况和不适合的情况,该用啥就用啥。 提高代码的可读性有很多思路; 比如拆分函数,一个入口函数进来就是很清晰的一个任务列表,然后每个任务想看具体实现就看对应子函数的代码; 比如空行和注释,用空行来分割不同代码章节,如果一段代码很复杂,那么没有什么比加几句注释更容易让人理解的。 有时候有人会避免使用 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 ![]() fp ,多用数组方法,三亩运算 |
28 darer 2022-04-21 18:50:42 +08:00 多用函数式编程( |
![]() | 29 AV1 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 杀了产品经理 |