gpt4 book ai didi

ruby - 重构一个简短的案例陈述

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:23 25 4
gpt4 key购买 nike

我在重构这个案例陈述时遇到困难:

case type
when :log
console = 'LOG'.on_blue.bold

console_prefix = "#{prefix}:".blue.bold if prefix
when :error
console = 'ERROR'.on_red.bold

console_prefix = "#{prefix}:".red.bold if prefix
console_message = message.red
when :ok
console = 'OK'.on_green.bold

console_prefix = "#{prefix}:".green.bold if prefix
end

puts "#{console} #{console_prefix} #{console_message}"

有一个等于:log:error:ok 的变量type。我正在使用 colorize gem 为我的控制台输出着色。所有 case 语句所做的就是定义哪种颜色与哪种“类型”一起使用。我考虑过定义一个类方法来设置 puts 的颜色,但这似乎过于复杂。

最佳答案

您可以像这样减少代码中的重复:

def color_for_type(type)
case type
when :log
:blue
when :error
:red
when :ok
:green
else
:black
end
end

然后像这样打印消息:

color           = color_for_type(type)
console = type.to_s.upcase.send("on_#{color}").bold
console_prefix = "#{prefix}:".send(color).bold if prefix
console_message = console_message.red if type == :error

puts "#{console} #{console_prefix} #{console_message}"

它的代码量或多或少相同,但没有重复,其意图也更加清晰,从而提高了可维护性。

关于ruby - 重构一个简短的案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com