Nome dell'interfaccia per le classi temporali

-2

Vorrei documentare che il codice incapsulato in una classe è "basato sul tempo" in un linguaggio simile a Java - il codice si comporta diversamente in base all'ora attuale. Per renderlo testabile, leggerebbe da un'interfaccia TimeProvider o qualcosa di simile.

  1. Questa documentazione dovrebbe essere eseguita tramite un'interfaccia o solo come funzione o proprietà sulla classe dipendente dal tempo?
  2. In caso affermativo, quale nome sarebbe appropriato come nome di interfaccia per documentare il fatto che la classe è basata sul tempo?
posta ipavlic 22.10.2018 - 19:43
fonte

2 risposte

2

A meno che lo scopo della classe sia quello di fornire la data e l'ora ad altre classi, la classe dovrebbe non dipendere dal tempo, del tutto. Dovrebbe dipendere da dati . E il tempo dovrebbe essere fornito ad esso come dati . Quindi, ad esempio, la classe potrebbe accettare un iniezione di un servizio che espone un metodo o una proprietà che restituisce la data e l'ora. La classe non dovrebbe accedere direttamente all'orologio di sistema.

Se lo fai in questo modo, puoi sostituire un servizio diverso se, ad esempio, desideri testare il sistema con un tempo simulato o hardcoded per testare le condizioni al contorno.

Quindi la domanda diventa-- come posso indicare che una classe si comporta diversamente in base ai dati che gli vengono forniti? E la risposta è ... niente, davvero, perché praticamente tutte le classi lo fanno.

    
risposta data 23.10.2018 - 01:21
fonte
1

Should this documentation be done through an interface or just as function or property on the time-dependent class?

Nessuno dei due.

La dipendenza dal tempo è importante solo in un contesto dei test. Non documenti il tuo codice per i test ; scrivi test per documentare il tuo codice.

Al di fuori del contesto di test, il fatto che il codice dipenda dall'ora corrente non è particolarmente interessante, nel qual caso non è necessaria alcuna documentazione specifica o importa, nel qual caso la quantità e il contenuto della documentazione saranno strongmente dipendente dal caso aziendale reale. Potrebbe essere semplice come un nome di un metodo:

const getUsageForToday = function () {
    ...
};

o complicato come un commento dettagliato che spiega che un metodo specifico si comporta in modo un po 'diverso quando viene chiamato dal Regno Unito durante l'ora legale dopo mezzanotte quando si utilizza un server ospitato a New York e configurato a GMT-5.

If so, what noun would be appropriate as an interface name to document the fact that the class is time based?

Tutto dipende dal contesto aziendale. Di nuovo, se ha senso enfatizzare l'importanza del tempo, allora (relativamente) troverai facilmente come nominarlo. In caso contrario, non preoccuparti di introdurre un dettaglio che gli sviluppatori che utilizzano il tuo codice non dovranno conoscere.

    
risposta data 22.10.2018 - 20:28
fonte

Leggi altre domande sui tag