Semi global variables

I have an application where multiple objects are created processing
different sets of data based upon a configuration specified. Each
object uses several other objects but those objects must use the
configuration initially set up in the first primary object. Each of
the primary objects maintain their own configuration.

How can you have variables defined in the primary object that are
visible to the other objects it creates?

Don F.

On Apr 25, 9:00 pm, Don F. [email protected] wrote:

I have an application where multiple objects are created processing
different sets of data based upon a configuration specified. Each
object uses several other objects but those objects must use the
configuration initially set up in the first primary object. Each of
the primary objects maintain their own configuration.

How can you have variables defined in the primary object that are
visible to the other objects it creates?

Well, we would need to know more to be sure. But one possibility is to
pass a reference to the primary object to all subsequent objects.

On Apr 25, 9:16 pm, Intransition [email protected] wrote:

Well, we would need to know more to be sure. But one possibility is to
pass a reference to the primary object to all subsequent objects.

That is an option but I hate to pass around that to every object.

class Driver
def initialize
live_data_handler = Handler.new(‘live’)
test_data_handler = Handler.new(‘test’)
end

def handle_command
do
command, data = queuemanager.wait
case command
when ‘processlive’
live_data_handler.handle(data)
when ‘processtest’
live_data_handler.handle(data)
end
until command == ‘quit’
end
end

class Handler
def initialize(config)
@config = getconfig(config)
@otherconfiginfo = other
end

def handle(data)
lots_of_different_objects_created(data)
end
end

this is an example of the structure. same handler code but config
determines what to do and how.

Don F.

2010/4/26 Don F. [email protected]:

visible to the other objects it creates?

Well, we would need to know more to be sure. But one possibility is to
pass a reference to the primary object to all subsequent objects.

That is an option but I hate to pass around that to every object.

You might hate it initially but you’ll be glad when coming back to the
code months later for maintenance. Using global variables of any form
makes code a) harder to read and understand and b) less flexible
(because you are bound to that exact global variable). Explicit
passing of data is the better alternative most of the time. You can
still organize it in a way that it’s not too much typing overhead.

    when 'processlive'
      live_data_handler.handle(data)
    when 'processtest'
      live_data_handler.handle(data)

Shouldn’t that read

test_data_handler.handle(data)

?

  end

until command == ‘quit’
end
end

class Handler
def initialize(config)
@config = getconfig(config)
@otherconfiginfo = other

Where do you get that “other” from?

end

def handle(data)
lots_of_different_objects_created(data)
end
end

this is an example of the structure. same handler code but config
determines what to do and how.

Kind regards

robert

On Apr 26, 9:02 am, Robert K. [email protected] wrote:

configuration initially set up in the first primary object. Each of
You might hate it initially but you’ll be glad when coming back to the
end
Shouldn’t that read
class Handler
end
remember.guy do |as, often| as.you_can - without endhttp://blog.rubybestpractices.com/
Thanks. Looks like I will just create a configuration object and pass
it around.

Other is just a place holder instead of showing more of the code.
There are lots of config things that are initialized.

Don Frenc