Visible Implication

By combining the mechanisms of Echo Back with methods that compute attributes we simplify some entries and improve the effectiveness of visual review for others.

People find many ways to quantify the things that matter. These measurements often duplicate each other with only a portion required to completely characterize the thing.

Often there is a sense that some values are more fundamental than other, derived quantities.

Other times the duplicate measurements are simply another way of looking at the thing.

Therefore:

Compute derived or redundant quantities implied by those already entered. Display the computed values in fields or cells along side those that are changed.

Where possible, allow a derived quantity to be entered and work backwards to compute the more fundamental measurements.

Where the choice of fundamental measure is ambiguous, choose the unspecified over the specified or the more variable over the less variable.

given quantity: 12 and unit price: 6.50 compute total: 78.00

given quantity: 12 and total: 72 compute price: 6.00

given price: 7.00 and total: 77.00 compute quantity:11

Perform this logic in the accessing methods of the domain model. Write getters that try to compute missing values from other inputs.

unitPrice ^ unitPrice notNil ifTrue: [unitPrice] ifFalse: [total / quantity]

Or, write setters that transform redundant quantities into the chosen fundamental measurements.

total: aValue unitPrice isNil ifTrue: [unitPrice := total / quantity] ifFalse: [quantity := total / unitPrice]

Keep the domain model's implication logic simple. Also, do not try to encode field dependencies into the user interface. Instead simply refresh all fields when any one changes.

You can expect Meaningless Behavior whenever a thing is incompletely specified. Expect these to show as blanks that will reinforce the incompleteness in your user's mind.

Be sure all implications can be computed in a small fraction of a second. Longer calculations, or those unsafe to perform on partial specifications are best left to Instant Projection.

DOT FROM preview-next-diagram