From: Justin Collins Date: 2013-06-12T05:17:31+09:00 Subject: Re: How would I refactor these four `unless` statements? On 06/11/2013 12:38 PM, Rafal C. wrote: > Let's say I have the following four `unless` statements in a row. At > first I thought about using `if` and `elsif` statements and negate the > condition but I'm not sure which way is suitable/readable/good-practice. > > unless @params.include?(:js_code) || @params.include?(:code_url) > raise BadParameters, 'You must include at least one...' > end > unless @params.include?(:compilation_level) > raise BadParameters, 'The :compilation_level...' > end > unless @params.include?(:output_format) > raise BadParameters, 'The :output_format...' > end > unless @params.include?(:output_info) > raise BadParameters, 'The :output_info...' > end > > Thanks in advance! > For the conditions that are really similar, you could do something like: missing_keys = [:compilation_level, :output_format, :output_info] - @params.keys unless missing_keys.empty? raise BadParameters, "Missing keys: #{missing_keys.inspect}" end -Justin