8 层嵌套, 400 多行代码的函数。。。

2020-06-09 21:13:10 +08:00
 asanelder

遇到一个老的项目,有一个函数是 8 层嵌套,if 套 while 再套 if 再套 while 再套 if ....,而且每个条件判断中,各种&& 套 || 再套 &&,这个 8 层嵌套俺数了一下,一共 400 多行代码。。。

让俺感觉到奇怪的是,之事从事这个项目的老员工对这个函数竟然没有丝毫的意见,他们似乎很平静。

那么问题来了,俺之前受的教育是,函数应该尽量短小,嵌套应该尽量浅。所以遇到这个函数俺自然感觉浑身不适,但那些老员工似乎都很平静。是俺太笨了,理解不了这种 8 层嵌套,还是俺太矫情,太理想主义了,太教条了,还是老员工已经习惯了?

求解惑

10124 次点击
所在节点    程序员
96 条回复
evilic
2020-06-10 08:03:34 +08:00
干好事有好报没?
lasuar
2020-06-10 08:12:06 +08:00
这个一般是传承下来的,你要改它,准备好加班和挨骂的风险。
isnullstring
2020-06-10 08:18:59 +08:00
改出问题还得挨骂,改好了好像也不会加薪
SO
Vitta
2020-06-10 08:19:46 +08:00
我见过 7000 行的
whywhywhy
2020-06-10 08:20:29 +08:00
偷偷的重新编写它,然后反复测测测,确保行为一致。然后找一个黄昏的早晨,轻轻的替换掉它。
JieS
2020-06-10 08:24:10 +08:00
@whywhywhy "你好骚啊"
chaodada
2020-06-10 08:30:52 +08:00
这算啥,年前写了一个功能,整体用十几个函数实现,最大的函数 1300 行🤨,上个月功能大还,我又将它拆分成了三个递归函数,这种函数一般功能不变,不会动的,动一动,公司就倒闭了🤣🤣🤣
butterf1y
2020-06-10 08:31:21 +08:00
@whywhywhy 又是一个不眠夜
littleshy
2020-06-10 08:36:42 +08:00
严以律己,宽以待人。
fxxwor99LVHTing
2020-06-10 08:42:06 +08:00
除非有问题,否决千万不要动。
rhwood
2020-06-10 08:51:59 +08:00
默默地看了一下我写的一个 200 行的函数,能用就好,自己都懒的改
php01
2020-06-10 08:57:17 +08:00
这或许是他们的生存智慧呢?也说不定的
wanzi123
2020-06-10 09:04:38 +08:00
前几天经历了一个方法里 5 层 for 循环哈哈
hejw19970413
2020-06-10 09:07:31 +08:00
远古代码 尽量不要动
CodingNaux
2020-06-10 09:08:03 +08:00
千万别动,哪怕格式化一下,留下 commit,以后 blame 出来都找你
smallyu
2020-06-10 09:09:05 +08:00
我刚毕业的时候也这么想,各种代码规范,应该怎样应该怎样。后来遇到了一个多月一个 crud 项目的需求,而且中间需求变了三四回,道貌岸然敏捷开发,基本上重写三四回。
dabang007
2020-06-10 09:11:26 +08:00
我做毕业设计时候,看到师兄的 VC 代码,总共 1W 多行,但其中一个函数就 8000 多行....
zzzmh
2020-06-10 09:13:48 +08:00
这才哪到哪,我在外包打杂的时候,随便一个 js 都是几千行,连 function 都不一定有,就见面先怼个 2000 行逻辑。。。还见过 for 循环一万次,然后得到的值被注释了,没起到任何作用。
jorneyr
2020-06-10 09:16:54 +08:00
IBM Domino 有个核心函数的代码有 1 万多行呢,脱离了业务逻辑谈代码,不敢随意下定论。
xiaoyang7545
2020-06-10 09:18:37 +08:00
如果是函数内的东西随便他里面怎么搞。能得到正确结果就是了。如果是流程的话就比较恶心。后面要是有需求变化就难改。

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

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

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

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

© 2021 V2EX