【问题标题】:Cleanly Validating Input干净地验证输入
【发布时间】:2016-09-18 18:46:08
【问题描述】:

在谈论“干净的代码”时,我们通常会听到编写干净的函数只做一件事

在处理用户输入时,它是否算作验证输入的一件事的一部分?例如,

/* Arg1 is passed directly from user input */
int foo(int arg1) {
    if (!arg1 || arg1 < 500) {
        return -1;
    }

    /* Do foo */
}

最好在函数内部编写这些验证测试,还是应该以某种方式将它们分开,如下所示:

if (argIsValid(arg1)) {
    foo(arg1);
}

无论如何,我想听听你的回答支持推理。谢谢!

【问题讨论】:

    标签: c validation input


    【解决方案1】:

    最好在函数中编写验证逻辑,例如名称为validate_args()

    你看,当你想增强验证逻辑时,很明显你也要看看,即使你不是代码的作者,所以 +1 维护!

    而且,它也让代码更优雅!

    【讨论】:

    • 那么在 foo() 内部调用验证函数会更合适,还是应该在 foo() 传递参数之前调用它?
    • 两者都可以。在您的问题中,您遵循后者。然而,I 会在foo() 内部调用它,如果验证失败,那么foo() 也应该失败,即返回错误代码,以便调用者(例如main())知道foo() 没有成功终止。 @frog 很好的问题,但是我从一开始就有这个问题!
    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多