You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迭代数组与对象属性、优化冗余case分支代码的更优实现方案?

Ruby代码重构方案

第一步:修正Myobject类定义问题

原有类的initialize方法未初始化属性为可push的数组,也未暴露属性访问器,会导致运行报错,修正后代码如下:

class Myobject
  # 暴露属性读写接口
  attr_accessor :blue, :red, :yellow

  def initialize
    # 初始化所有属性为空数组,支持后续push操作
    @blue = []
    @red = []
    @yellow = []
  end
end

第二步:重构mymethod消除重复逻辑

通过参数-属性映射表替代冗余的case分支,重构后代码如下:

def mymethod(myobject)
  # 集中管理参数值到实例属性的映射关系
  param_to_attr = {
    'foo' => :blue,
    'bar' => :red,
    'jaa' => :yellow
  }
  param_list = ['foo','bar','jaa']

  param_list.each do |param|
    # 可选:添加合法参数校验,避免非法参数触发异常
    next unless param_to_attr.key?(param)
    data = collect_method
    myobject.send(param_to_attr[param]).push(data)
  end
end

重构优势

  • 完全消除重复的分支代码,后续新增参数仅需在param_to_attr中添加一行键值对,无需修改核心逻辑
  • 映射关系集中管理,代码可读性和可维护性大幅提升
  • 可灵活扩展参数校验、数据预处理等通用逻辑,无需修改每个分支

内容的提问来源于stack exchange,提问作者AnnABlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:18:01