Consider:
    
    
    type
      Actions = enum
        Accuracy, Maturity, Id, Phase, Skip, Status
      Action = object
        case kind: Actions
        of Accuracy: acc: range[1..9]
        of Maturity: maturity: range[1..9]
        of Id: id: int
        of Phase:
          phasenote: string
          phase: range[1..5]
        of Skip:
          skipnote: string
          skip: int
        of Status:
          statusnote: string
          status: int
    
    
    Run

And say I don't like those foo-note fields. They're just notes; it's not 
important that they're notes for a status vs. some other kind of action.

Alternative #1 is to add a note: string field to the Action object, already 
stated.

Alternative #2:
    
    
    type
      Actions = enum
        Accuracy, Maturity, Id, Phase, Skip, Status
      Action = object
        case kind: Actions
        of Accuracy: acc: range[1..9]
        of Maturity: maturity: range[1..9]
        of Phase: phase: range[1..5]
        of Id, Skip, Status:
          note: string
          id, skip, status: int
    
    
    Run

This moves the bloat to only three variants, instead of to all of them. Whether 
this is desirable or not vs. alternative #1 depends on your use.

Reply via email to