[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
[cdt-dev] EDC objects described via property bags
 | 
In the EDC API, a frame object is described using a property bag (a
Map<String,Object>). E.g.,
  // EDC adopter must implement this
   protected abstract List<Map<String,
Object>> computeStackFrames();
If this method would at least describe in javadoc what sort of
properties are expected in the bag, then the situation wouldn't be so
bad; the EDC adopter would at least know what to provide. But it doesn't.
And of course, the property bag is passed around quite a bit. So, to
duplicate that documentation in all those places is clearly not a good
approach. For this reason, I dislike this sort of API. A slight variation
can keep the flexibility intended by the API but make it much more
intuitive to use:
   protected abstract List<EdcStackFrame>
computeStackFrames();
   /**
    * A stack frame described as one or more of the
following 
    * properties, plus any additional custom
properties.
    * 
    * <ul>
    * <li>{@link StackFrameDMC#LEVEL_INDEX}
    * <li>{@link StackFrameDMC#ROOT_FRAME}
    * ...
    * </ul>
    */
   public class EdcStackFrame  {
      public Map<String, Object>
props;
   }
Any objections to using this pattern throughout EDC? Clearly, this
would be API breaking stuff, but I think we're still at a point where
adoption is low and this sort of improvement is not only doable but
necessary in order to make the framework more usable?
John