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

Back to archive index

YUKI Hiroshi yuki****@clear*****
Tue Aug 26 10:18:31 JST 2014


Hangouts上でも少しやりとりがあったのですが、payloadのバリデーションをき
ちんとした方がよいのではないかという指摘が、新美さんからもありました。
今回のインターンシップの目標設定からは脇道にそれることになるので、Issue
を登録して一旦保留にしておこう、というのが今のところの判断です。
(でもまだIssueになっていないかも)


Kouhei Sutou wrote:
>> +        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
> 
> _______________________________________________
> Groonga-commit mailing list
> Groonga-commit �� lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/groonga-commit
> 

-- 
結城 洋志 <YUKI Hiroshi>
E-mail: yuki �� clear-code.com

株式会社クリアコード
〒113-0033 東京都文京区本郷3-27-12
           本郷デントビル2階
TEL : 03-6231-7270
FAX : 03-6231-7271
WWW : http://www.clear-code.com/




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