Analisi semantica
- Non ho idea di quale sia l'intenzione di questo metodo.
- I nomi del metodo e dei parametri non aiutano. Converte ... qualcosa .
- Non ho accesso ai requisiti per questo metodo.
- L'uso del tipo
object
non aiuta.
Direi che l'uso di object
è una cattiva progettazione. Invece, vorrei usare string
per value
e rendere chiamante .ToString
responsabilità del chiamante. L'analisi statica ti dirà quindi che il valore di ritorno del metodo può essere anche string
.
Vedo commento di Berin Loritsch che dice che questo metodo la firma è richiesta da alcuni sistemi di terze parti (ovvero WPF). Bene, Vergognati. Considera di estrarre il tuo metodo e dargli i tipi appropriati.
Test unitari
È corretto che tu stia testando i tuoi requisiti. Tuttavia, la mancanza di questi non significa che non possiamo considerare alcuni scenari da testare. Tuttavia, dal momento che non siamo sicuri di quale sia il comportamento previsto, non possiamo essere certi dei criteri del passaggio per i test. Se non lo sai neanche tu, immagino che capirai dopo aver considerato ogni caso (o forse quando eseguirai il codice).
Quindi, vediamo alcuni scenari. Considera, qual è l'interfaccia efficace di value
:
- Può essere
null
, quindi, prova passando null
.
-
Chiameremo ToString
su di esso. Aha!
Passa un oggetto che quando chiami .ToString
su di esso ...
- Genera un'eccezione.
- Restituisce null.
- Restituisce una stringa vuota.
- Restituisce una stringa.
-
Chiamerà Substring
sul risultato e quindi Replace("%","/")
. Vediamo anche un assegno per due, quindi andiamo - almeno - fino a tre.
Passa un oggetto che quando chiami .ToString
su di esso ...
- restituisce una stringa che contiene un singolo "%"
- restituisce una stringa che contiene un paio "%"
- restituisce una stringa che contiene tre "%"
Note :
- Potresti voler restituire stringhe di lunghezze diverse.
- Quelle stringhe possono contenere altre cose oltre a "%".
Per quanto riguarda i metodi basati su stringhe di test unitari, potresti anche voler testare stringhe con simboli orientali, emoji, coppie surrogate, caratteri compositi, spazio a larghezza zero e da sinistra a destra e da destra a sinistra segni. Tuttavia, se trovi qualcosa di sbagliato qui, è molto probabilmente un bug in .NET.
Con i requisiti, potrebbero esserci più test da fare. Inoltre, man mano che vedi i risultati e migliora il codice, potrebbero esserci test di regressione o test progettati per aumentare la copertura.
Analisi statiche
I test non sostituiscono l'analisi statica. E qualsiasi strumento di analisi statica ti dirà che non stai utilizzando targetType
, parameter
e culture
.
Suppongo che questo sia un triste fatto accettato e che chiunque lavori con questo sistema lo capirà presto. Tuttavia, ti dirò comunque di considerare l'aggiunta di un commento per la mancanza di utilizzo di questi parametri. Ciò faciliterà la leggibilità, in particolare per le persone che non hanno familiarità con il sistema (come me).