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