现在我有一个子来验证一堆文本框和组合框。
我以前使用过很多IF语句来验证和弹出每个IF语句中的不同消息框和Exit Sub。
但我听说太多的退出会降低效率,不建议使用它们。相反,嵌套的IF更好,因为它会让进程自然地结束。
然后我发现如果我使用嵌套的IF,它将难以阅读,因为消息框都与条件分开。
我没有软件开发经验。所以我的问题是:在真实的项目中,你会选择哪种风格?
答案 0 :(得分:6)
您应该使用更具可读性的内容以及您对团队的看法。
至于Exits
性能下降很多 - 我不知道这是否属实,但即使是这样,我也希望它对微量微优化来说是微不足道的。这是您可以轻松测试自己的东西 - 在循环中运行两种类型的代码(数百/数十亿次)并使用StopWatch
类测量每次花费的时间。
我个人觉得在这种特殊情况下更容易阅读多个退货,这是我惯常的风格。
答案 1 :(得分:0)
就个人而言,我使用嵌套ifs进行处理,并使用Exit Sub / Function进行前置条件验证。我见过一些开发人员将Exit Sub / Function抛出窗口,只返回return关键字。
这取决于贵公司的目标是多少。许多人使用Exit Sub / Function语句的原因是通过在subs和函数开始处理之前验证前置条件来减少圈复杂度。这里的想法是基于违反前置条件退出,这可能是嵌套ifs中的其他条件,这将大大降低圈复杂度,从而提高代码的可维护性。
就像其他一切一样,这里有一个基于可读性的权衡。如果你有太多的Exit Subs或Exit函数,当通过调试调用该方法时,可能会混淆为什么方法过早终止并导致更长的调试时间。
关于性能问题一直存在争议。但是,我从未测试过它。我可以说我没有遇到任何与使用Exit相关的性能问题,而不是使用嵌套的ifs。