Kouhei Sutou
kou****@clear*****
Wed Mar 25 10:48:21 JST 2015
> Make Droonga::Address subclass of Droonga::NodeName ちょっとよくわかっていないんですけど、NodeNameというものは Addressというものを包含しているものですか?であれば、これで いいと思うんですが、包含しているわけじゃない(違う概念のもの) だけど実装が似ている、ということならサブクラスにはせずにこの 変更の前のようにコンポジションしてまとめておいた方が、実体に 即した理解しやすいコードになると思います。 > def to_s > + node > + end > + > + def node > "#{@host}:#{@port}/#{@tag}" > end これはいいと思います。 In <48e28ad810e74bb985f00f801fc9ca615ed9f9b5 �� jenkins.clear-code.com> "[Groonga-commit] droonga/droonga-engine �� 48e28ad [master] Make Droonga::Address subclass of Droonga::NodeName" on Wed, 25 Mar 2015 10:21:30 +0900, YUKI Hiroshi <null+groonga �� clear-code.com> wrote: > YUKI Hiroshi 2015-03-25 10:21:30 +0900 (Wed, 25 Mar 2015) > > New Revision: 48e28ad810e74bb985f00f801fc9ca615ed9f9b5 > https://github.com/droonga/droonga-engine/commit/48e28ad810e74bb985f00f801fc9ca615ed9f9b5 > > Message: > Make Droonga::Address subclass of Droonga::NodeName > > Modified files: > lib/droonga/address.rb > lib/droonga/node_name.rb > > Modified: lib/droonga/address.rb (+4 -20) > =================================================================== > --- lib/droonga/address.rb 2015-03-25 00:17:56 +0900 (89e8f33) > +++ lib/droonga/address.rb 2015-03-25 10:21:30 +0900 (34acf5d) > @@ -16,7 +16,7 @@ > require "droonga/node_name" > > module Droonga > - class Address > + class Address < NodeName > class << self > def parse(string) > if /\A(.+):(\d+)\/([^.]+)(?:\.(.+))?\z/ =~ string > @@ -37,38 +37,22 @@ module Droonga > > attr_reader :name > def initialize(components={}) > - @node = NodeName.new(components) > + super > @name = components[:name] > end > > - def host > - @node.host > - end > - > - def port > - @node.port > - end > - > - def tag > - @node.tag > - end > - > def to_s > - string = node > + string = super > string << ".#{@name}" if @name > string > end > > def to_a > - @node.to_a + [@name] > + super + [@name] > end > > def ==(other) > other.is_a?(self.class) and to_a == other.to_a > end > - > - def node > - @node.to_s > - end > end > end > > Modified: lib/droonga/node_name.rb (+4 -0) > =================================================================== > --- lib/droonga/node_name.rb 2015-03-25 00:17:56 +0900 (7abc6b6) > +++ lib/droonga/node_name.rb 2015-03-25 10:21:30 +0900 (2b4e09b) > @@ -58,6 +58,10 @@ module Droonga > end > > def to_s > + node > + end > + > + def node > "#{@host}:#{@port}/#{@tag}" > end >