I don't think the absence of a use case should ever be used to justify lack of orthogonality. If design were driven solely by use cases, orthogonality would go out of the window. The design process should aim to produce the most elegant/orthogonal design that satisfies all the use cases, it should not aim to satisfy the known use cases and nothing else. Or to put it another way: find the space with the smallest boundary that has all the use cases within the space, where the "boundary" is the boundary between things that the system handles and things that it doesn't. (An extreme example I often use to illustrate this principle: arithmetic expressions X+Y should allow either operand to be a literal zero, even though there is no use case for adding zero to a number, because a specification that allows literal zero is smaller than one that doesn't). The lack of orthogonality between attribute values and element content was in fact one of the design mistakes in XML that I was trying to correct.
Why should personal preferences come into it? You might prefer <price currency="USD" amount="5.00"/> to <price currency="USD">5.00</price>, but others don't. Michael Kay Saxonica |