[Groonga-commit] droonga/droonga-engine at e305364 [master] Don't use guard-unless style for a long line

Back to archive index

Kouhei Sutou kou****@clear*****
Tue Aug 26 09:53:07 JST 2014


> +        required_params = [
> +          source_node,
> +          source_node_port,
> +          source_node_dataset,
> +          joining_node,
> +          dataset,
> +        ]
> +        return unless required_params.all?
> +

これ、もう一歩推し進めて、引数なしのall?を使うのをやめるのは
どうでしょうか?

  return unless required_params.all? {|param| not param.nil?}

や

  return if required_params.any?(&:nil?)

みたいな感じです。

さらに推し進めるならvalid_parameters?みたいなメソッドを作っ
て

  return unless valid_parameters?

みたいにするとかでしょうか。

ちなみに、私は、こういうとき(生データから使いやすい形で値も
取りたいしバリデーションもしたいとき)はオブジェクトを作って
います。

  class SpecificMessage
    def initialize(raw_data)
      @raw_data = raw_data
    end

    def param1
      @raw_data["param1"]
    end

    def valid?
      return false if param1.nil?
      return false if param2.nil?
      # ...
      true
    end
  end

みたいな感じです。

こうすると生データから特定の値を取得する処理をメソッドにでき
るので、アクセス方法を一元化したままでいろんなところから使え
てスッキリ書けることが多いです。

少し下にある

>          source_host  = source_node.split(":").first

という部分もオブジェクトのメソッドにできるので、「ちょっと入
り組んだ処理」もオブジェクト内に隠蔽できて便利だなぁと思って
使っています。

In <e305364e3e47971baf015f2a469b3572132cdf3c �� jenkins.clear-code.com>
  "[Groonga-commit] droonga/droonga-engine �� e305364 [master] Don't use guard-unless style for a long line" on Mon, 25 Aug 2014 20:23:43 +0900,
  YUKI "Piro" Hiroshi <null+groonga �� clear-code.com> wrote:

> YUKI "Piro" Hiroshi	2014-08-25 20:23:43 +0900 (Mon, 25 Aug 2014)
> 
>   New Revision: e305364e3e47971baf015f2a469b3572132cdf3c
>   https://github.com/droonga/droonga-engine/commit/e305364e3e47971baf015f2a469b3572132cdf3c
> 
>   Message:
>     Don't use guard-unless style for a long line
> 
>   Modified files:
>     lib/droonga/command/serf_event_handler.rb
> 
>   Modified: lib/droonga/command/serf_event_handler.rb (+9 -2)
> ===================================================================
> --- lib/droonga/command/serf_event_handler.rb    2014-08-25 20:21:01 +0900 (ae49814)
> +++ lib/droonga/command/serf_event_handler.rb    2014-08-25 20:23:43 +0900 (ad658ef)
> @@ -137,8 +137,15 @@ module Droonga
>          joining_node        = @payload["node"]
>          tag                 = @payload["tag"]
>          dataset             = @payload["dataset"]
> -        return unless [source_node, source_node_port, source_node_dataset, joining_node, dataset].all?
> -        
> +        required_params = [
> +          source_node,
> +          source_node_port,
> +          source_node_dataset,
> +          joining_node,
> +          dataset,
> +        ]
> +        return unless required_params.all?
> +
>          log("source_node  = #{source_node}")
>  
>          source_host  = source_node.split(":").first




More information about the Groonga-commit mailing list
Back to archive index