Ruby

💎 Ruby 防御式编程权威指南

规避 Ruby 可变字符串、块作用域、元编程陷阱的权威编码规范,适合生产级代码质量保障。

收藏
3.9k
安装
1.6k
版本
1.0.1
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

本技能是一套 Ruby 编码规范与陷阱规避指南,聚焦语言设计中的微妙行为差异。核心覆盖四大领域:

对象与相等性:明确区分 ==(值相等)、equal?(同一性)、eql?(哈希相等),并强制使用 # frozen_string_literal: true 魔法注释消除可变字符串隐患。s << "!" 的副作用传播是新手常见 bug 源。

块与闭包:Proc 与 lambda 的 return 语义截然不同——前者从包围方法返回,后者仅本地返回。Ruby 3.0+ 中块参数不再污染外部作用域,但历史代码仍需审计。

方法与可见性:private 是每实例的调用约定限制,self.private_method 调用会失败;method_missing 必须配对 respond_to_missing? 实现以保持 respond_to? 契约。

集合与元编程:Hash.new([]) 共享默认值的陷阱需改用块形式 Hash.new { [] };define_method 优于 eval,||= 对 false 值的误判需显式处理。

显著优点

  • 直击 Ruby 设计缺陷与历史包袱,非表面语法整理
  • 覆盖 Rails 特定场景(N+1、ActiveRecord 回调),具备框架级实用性
  • 规则粒度精准,每个条目对应可复现的 runtime 行为差异

潜在局限

  • 未涉及并发安全(Ractor、Thread 局部变量)、GC 优化等高级主题
  • Rails 章节仅为索引形式,具体内容依赖外部文件
  • 版本限定 Ruby 3.0+,遗留代码库的 2.x 行为差异未标注

适合人群

中高级 Ruby 开发者、代码审查者、追求防御式编程的团队。不适合初学者系统学习语言基础。

常规风险

  • 过度依赖 method_missing 导致栈溢出与调试困难
  • eval 与 class_eval 引入的代码注入面(虽未在本技能中展开)
  • Frozen string literal 迁移对既有 String#<< 代码的破坏性变更

Ruby 内容

手动下载zip · 5.0 kB
blocks.mdtext/markdown
请选择文件