G.FUD.03 当函数参数出现太多 bool 类型的参数时,应该考虑将其封装为自定义的结构体或枚举

【级别】 建议

【描述】

布尔类型的参数过多,很难让人记住,容易出错。将其封装为枚举或结构体,可以更好地利用类型系统的检查而避免出错。 其他类型参数过多时,也可以考虑是否可以用自定义结构体或枚举进行封装。

【反例】


#![allow(unused)]
#![warn(clippy::fn_params_excessive_bools)]

fn main() {
// 不符合
fn f(is_round: bool, is_hot: bool) { ... }
}

【正例】


#![allow(unused)]
#![warn(clippy::fn_params_excessive_bools)]

fn main() {
enum Shape {
    Round,
    Spiky,
}

enum Temperature {
    Hot,
    IceCold,
}

// 符合
fn f(shape: Shape, temperature: Temperature) { ... }
}

【Lint 检测】

lint nameClippy 可检测Rustc 可检测Lint Grouplevel
fn_params_excessive_boolsyesnopedanticallow

该 lint 对应 clippy.toml 配置项:

# 用于配置函数可以拥有的 bool 类型参数最大数量,默认为 3。
max-fn-params-bools=3