闽公网安备 35020302035485号
5. 工具使用:借助工具提升开发效率。
// 模糊命名:让人费解 let a = calculate(b); // 清晰命名:意图明确 let total_price = calculate_total_price(cart_items);改进思路:
// 无意义的注释:重复代码功能
// 遍历用户列表
for user in users {
println!("{}", user.name);
}
// 有意义的注释:解释代码背后的意图
// 打印所有活跃用户的名字,用于生成报告
for user in users.iter().filter(|u| u.is_active) {
println!("{}", user.name);
}
改进思路:// 使用 rustfmt 格式化前:
fn main(){let a=10;println!("{}",a);}
// 使用 rustfmt 格式化后:
fn main() {
let a = 10;
println!("{}", a);
}
二. 代码效率:找到“刚刚好”的优化// 简单易懂的代码
let numbers: Vec<i32> = (1..=100).collect();
// 堆代码 duidaima.com
// 更高效但稍复杂的代码
let mut numbers = Vec::with_capacity(100);
for i in 1..=100 {
numbers.push(i);
}
改进思路:// 计算所有已完成订单的总金额
let total_revenue: f64 = orders
.iter()
.filter(|order| order.is_completed())
.map(|order| order.amount)
.sum();
改进思路:// 使用 Result 处理文件读取错误
fn read_file_content(path: &str) -> Result<String, std::io::Error> {
std::fs::read_to_string(path)
}
// 使用 Option 处理可能的空值
fn get_user_name(user: Option<&User>) -> String {
user.map_or("Guest".to_string(), |u| u.name.clone())
}
4. 测试:为代码保驾护航#[cfg(test)]
mod tests {
use super::*;
#[test]
fntest_addition() {
assert_eq!(2 + 2, 4);
}
#[test]
fntest_greeting() {
letname = "Alice";
assert_eq!(format!("Hello, {}!", name), "Hello, Alice!");
}
}
改进思路:• 使用持续集成(CI)工具自动运行测试。
fn main() {
let name = String::from("Alice");
let cloned_name = name.clone(); // 不必要的克隆
println!("Hello, {}", cloned_name);
}
我们运行 cargo clippy会提示我们warning: this creates an owned instance unnecessarily --> src/main.rs:3:21 | 3 | let cloned_name = name.clone(); // 不必要的克隆 | ^^^^^^^^^^^^^ help: remove `.clone()`: `name` | = note: `#[warn(clippy::redundant_clone)]` on by default特点
3. 帮助改进代码:Clippy 旨在帮助你写出更简洁、性能更高、符合 Rust 社区惯例的代码。