G.TYP.BOL.07 使用 .not() 方法代替逻辑取反运算符 (!)

【级别】 建议

【描述】

逻辑取反运算符 (!) 是前缀一元运算符,相对较长的逻辑表达式来说很不显眼。

理解业务逻辑时,容易忽略取反符号,并且需要回头看。

使用 .not() 后缀方法 (std::ops::Not) 可以吸引注意力,视觉上更为连续。

【反例】


#![allow(unused)]
fn main() {
assert!(!self.map.contains(&key));

if !cache.contains(&key) {
    // ...
}

// 不符合:容易忽略取反符号
}

【正例】


#![allow(unused)]
fn main() {
use std::ops::Not;

assert!(self.map.contains(&key).not());

if cache.contains(&key).not() {
    // ...
}

// 符合:`.not()` 更容易吸引注意力
}