隐式使用 null 参数作为良好代码风格的标志

Is implicitly using null argument as a flag good code style

以下哪种编码风格更好,为什么? 1)

public string GetValue(string setting, string error)
{
    var val = GetSettingFromSomewhere(setting);
    if (val==null && string.IsNullOrEmpty(error)) throw Exception(error);
    return val;
}

或者 2)

public string GetValue(string setting, bool isRequired, string error)
{
    var val = GetSettingFromSomewhere(setting);
    if (val==null && isRequired) throw Exception(error);
    return val;
}

IsNullOrEmpty 函数是 Light 并且它返回一个布尔值,所以我想对于这种情况特别是它并不重要。重要的是你认为什么能让你的函数对可能使用该函数的人来说更具可读性

不推荐在 Clean Code 书中标记。您最好制作两种不同的方法,一种名为 GetRequiredValue,另一种名为 GetOptionalValue。错误字符串对我来说似乎多余,使用自定义异常(“GetSettingFromSomewhereException”)并传递设置值。