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/