Personalmente, usaría SECS_PER_MIN, SECS_PER_HOUR, etc. Incluso he conocido NANOS_PER_SEC en ocasiones. Siempre lo haría si un idioma careciera de notación científica para literales enteros.
No se trata de legibilidad, exactamente. El motivo de usar SECS_PER_DAY en lugar de 86400 no tiene que ver solo con el conocimiento general que esperamos del lector. Se trata de código de auto-documentación, lo que significa que muestra inequívocamente su trabajo.
Claro, todo el mundo sabe que hay 60 segundos en un minuto. Pero también saben que hay 60 minutos en una hora. Si usa un literal de 60, probablemente sea obvio lo que su código tiene la intención de hacer. Pero, ¿por qué arriesgarse?
Si usa SECS_PER_MIN, entonces definitivamente es obvio que está convirtiendo un tiempo en minutos (solo 1 minuto, en su ejemplo) a un tiempo en segundos. Por ejemplo, no está agregando de una hora a un tiempo medido en minutos, o de un grado a un ángulo en minutos. No está agregando 5 pies a una longitud medida en pulgadas.
Las constantes con nombre proporcionan más contexto para el código circundante. Para su ejemplo de agregar un tiempo, sabemos simplemente mirando una línea que $ x necesita ser un tiempo en segundos. El nombre de la constante reitera que $ x no es un tiempo en milisegundos, o marcas de reloj, o microfortnights. Esto hace que sea más fácil para todos verificar y mantener la corrección de las unidades: pueden ver al mirar que lo que intentaron hacer es lo que realmente hicieron. Nunca tienen que siquiera considerar la idea de que quisiste agregar 60 milisegundos a un tiempo medido en milisegundos, pero te equivocaste porque $ x en realidad estaba en segundos.
Las constantes con nombre también ayudan a evitar errores tipográficos. Claro, todos saben que hay 86400 segundos en un día. No se desprende necesariamente que no escriban esto como 84600, o que inmediatamente detectarán el error si alguien más lo ha hecho. De acuerdo, tienes pruebas completas, por lo que un error así nunca llegaría al campo, pero la forma más eficiente de solucionarlo es evitar que el código defectuoso lo haga probar en primer lugar. Así que definiría las constantes de este tipo (o cualquier sintaxis):
SECS_PER_MIN := 60;
SECS_PER_HOUR := 60 * SECS_PER_MIN;
SECS_PER_DAY := 24 * SECS_PER_HOUR;
SECS_PER_WEEK := 7 * SECS_PER_DAY;
O, si se necesitaban las otras constantes de todos modos (que en el caso del tiempo que probablemente no porque normalizar todo en segundos en la primera oportunidad de reducir las posibilidades de confusión):
SECS_PER_MIN := 60;
MINS_PER_HOUR := 60;
HOURS_PER_DAY := 24;
DAYS_PER_WEEK := 7;
SECS_PER_HOUR := SECS_PER_MIN * MINS_PER_HOUR;
etc.
Nota del orden en el lado derecho: los minutos visiblemente "cancelar", haciendo que el trabajo aún más clara. No es tan importante con el tiempo, pero es bueno establecer un esquema coherente desde el principio, de modo que cuando las cosas se pongan feas más tarde (CLOCKS_PER_SEC, PLANCK_LENGTHS_PER_PARSEC) pueda hacerlo bien utilizando técnicas familiares.
C++ 14 '' más una buena biblioteca de fecha/hora le da un nuevo giro a esto: https://github.com/HowardHinnant/date/wiki/Examples-and-Recipes # microfortnights :-) –