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

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

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

4667 次点击
所在节点    程序员
33 条回复
3dwelcome
2022-04-21 13:37:56 +08:00
@stillsilly 对我来说,抽象就是把经常变动的部分从代码里踢出去,保留不变的部分。

多次递归后,就形成程序的第一层抽象。而良好的程序,多层抽象组合在一起的。

很多新人需求都没弄明白,一上手就设计模式,有点画蛇添足了。
zhangjinghua
2022-04-21 15:17:52 +08:00
@stillsilly 这本书我认真读过两遍,确实非常不错
ikas
2022-04-21 15:46:45 +08:00
while 、for 、if 改成 elihw, rof, if
ALLROBOT
2022-04-21 15:55:50 +08:00
@fayetitus #20 是的。。。
@cssk #19 单片机用 if ,for ,while 有时候发生 BUG 很奇怪

比如 if 判断明明是 True 的,但 if 就是不执行

比如用全局数组,方法按顺序执行,第一个方法能执行给数组某个索引下标赋值,第二个方法再次为数组某个下标赋值等等,我执行了 1000 次,前几次能正常输出不同的数组,但之后就输出 900 多个相同的一行。。。

用 xxx[0]='\o'不管用😅,可能是我太菜的缘故吧
libook
2022-04-21 17:07:42 +08:00
每种语法都有其适合的情况和不适合的情况,该用啥就用啥。

提高代码的可读性有很多思路;
比如拆分函数,一个入口函数进来就是很清晰的一个任务列表,然后每个任务想看具体实现就看对应子函数的代码;
比如空行和注释,用空行来分割不同代码章节,如果一段代码很复杂,那么没有什么比加几句注释更容易让人理解的。

有时候有人会避免使用 if ,比如函数提前 return ,或者各种三元表达式和逻辑运算,这样虽然代码少了,但同时也难以理解了,因为你要在自己脑海里建立一套状态。我反而十分推荐写 if 的时候尽量写 else ,把所有情况都清晰表达出来,这样也能避免一些逻辑不严谨产生的 bug 。
DTCPSS
2022-04-21 18:44:09 +08:00
复杂度不能消灭只能转移…
fernandoxu
2022-04-21 18:49:37 +08:00
fp ,多用数组方法,三亩运算
darer
2022-04-21 18:50:42 +08:00
多用函数式编程(
DOLLOR
2022-04-21 19:50:52 +08:00
用数组的 forEach, map, some, every 代替
ragnaroks
2022-04-21 19:51:59 +08:00
无非就是防御性编程和响应式编程
felixcode
2022-04-21 20:24:37 +08:00
只用状态机
aliveyang
2022-04-21 21:32:07 +08:00
业务简化了,程序自然就简化了
fortunezhang
2022-04-22 08:24:33 +08:00
杀了产品经理

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

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

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

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

© 2021 V2EX