gpt4 book ai didi

vb.net - 退出 = 意大利面条代码?

转载 作者:行者123 更新时间:2023-12-02 03:24:01 25 4
gpt4 key购买 nike

我一直被教导要从函数中退出并编写不会到处跳转的代码,是以下错误代码还是有更好的方法来编写 for 循环而不需要“退出 for” ?

dim dt as datatable = FillDataTableFunction()
dim bWrite as boolean = false
for each row as datarow in dt.rows
if row.item("somecolumn") <> string.empty then
bWrite = true
exit for
end if
next

if bWrite then
'do stuff
end if

我想我只是认为这会减少 for 循环中不必要的迭代,但出于某种原因,这似乎是一种糟糕的编码实践。

最佳答案

“我一直被教导” - 在生命的某个时刻,人们开始学习而不是被教导:-)

不要把任何事情当作福音(即使是我的——如果你不同意,请自行决定)。查看指南背后的内容,了解它们存在的原因。

之所以告诉您多个退出点不好,是因为它们通常会导致代码难以理解。换句话说,一个充满 return 语句的 400 行函数很难对其行为进行分析。

您的小代码片段不会受到此影响。我遵循的准则是:如果您可以在编辑器的单个屏幕上看到控制流,那就没问题。而且,由于 12 行内容适合我在过去二十年中使用过的任何编辑器,因此您的代码非常具有可读性。

事实上,我见过“从不使用多个退出点”的人写的代码,其可读性远远低于违反他们的规则所产生的代码。它通常涉及多条件 while 语句,这些语句非常复杂,以至于必须将其分解为多行,并且分析起来仍然很痛苦。

以可读性为目标。如果指南对此有帮助,请使用它们。如果没有,请将它们扔出窗外。

关于vb.net - 退出 = 意大利面条代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com