date: Nov 7, 2003
author: Pau Arumí

Removing Names from Configs

What's Wrong?

It introduces a lot of complexity in Processing base class --specially in Configure-- because the parent (Composite) have to check if Name dynamic attribute is set and if it's repeated in its scope (the parent composite).

Client code is unclear: because configuration have the Name attribute the user don't use in any way. Morover, while some examples configure the name, others (most) don't.

Identifying by string not-in-network Processings is an unneeded feature (and thus, overcomplexity). Some reasons:

So why did we put them into the configuration? I remember the (long ago) decision of doing this mostly because we wanted see named objects in the forseen introspection tool.

I'm of the opinion that this use case (introspection) can be perfectly archieved knowing only the class name (Processings have a mandatory GetClassName()): if it happens to be lots of objects with the same class name is no big deal since the introspection tools will show anyway the topology (network) of the system which will desambiguate which processing is which. Morover I think those kind of tool is much more likely to be made for networks than for non-network environments.

Proposed Solution

Remove the Name attribute in configs. More concretelly:

Backward compatibility

Fortunatelly leaving the concrete config classes with the Name attribute should be no problem at all. (well, leaving apart the problem of having unused code. )

How to make the transition in client code?

Though leaving Name attributes in client code won't hurt, I'm of the opinion of making a quick transition and remove those blank implementation asap. As is

A trivial script could be provided that signals all the lines that should be removed.