===== Use Strings, not Numeric Constants ===== When an API needs to take or return an enumerated value, many older APIs follow the C convention and use numeric constants, stored on some interface object. Modern API practice is instead to use strings directly. See, for example, the ''responseType'' property used in XHR. An anti-example can be found in CSSTransformValue, which returns a list of transforms that expose an ''operationType'' property. This is currently specified to contain an integer, with the intent that authors testing the value will use the constants like ''CSSTransformValue.CSS_TRANSLATE3D''. There are multiple problems with this: - it is much longer to type than a string like "translate3d" - the name of the constant is different than the name of the function it corresponds to, while a string can be the same. - simply printing or storing the value reveals an opaque integer like ''13'', which can't be translated back into a transform type without testing against every constant - long experience shows that, given the choice of using a named constant or an integer, authors will end up using the integer form instead, often due to cargo-cult "speed improvements" Instead of code like: if (list.operationType == CSSTransformValue.CSS_TRANSLATE3D) You can instead have code like: if (list.operationType == "translate3d")