【发布时间】:2020-12-29 05:53:14
【问题描述】:
我有以下 ruby 方法,它看起来超级难看,我想重构它并减少它的感知复杂性。
def validate_hash_params(**kwargs)
kwargs.each do |k, v|
raise Sith::ProcessingError, "#{k} should be of type String" unless v&.is_a? String
raise Sith::ProcessingError, "id length should be less than equal to 25" if kwargs[:id].length > 25
raise Sith::ProcessingError, "info length should be less than equal to 100" if kwargs[:info].length > 100
raise Sith::ProcessingError, "first_name length should be less than equal to 60" if kwargs[:first_name].length > 60
raise Sith::ProcessingError, "email length should be less than equal to 50" if kwargs[:email].length > 50
raise Sith::ProcessingError, "Invalid Email" unless Sith::EMAIL_REGEX.match(kwargs[:email])
raise Sith::ProcessingError, "amount should contain digits with upto 2 decimal places" unless Sith::AMOUNT_REGEX.match(kwargs[:amount])
[kwargs[:key1], kwargs[:key2], kwargs[:key3], kwargs[:key4], kwargs[:key5]].each do |key|
raise SithError, "key length should be less than equal to 255" if key.length > 255
end
end
end
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
“优化”是什么意思?
-
我很困惑。
|k,v|循环中的大部分语句不是k或v的函数,所以只是重复而已。 -
您使用 ruby-on-rails 标记了您的问题。我想知道你为什么不使用Rails model validations?
-
kwargs会被用来初始化模型吗?
标签: ruby-on-rails ruby oop optimization refactoring