Domanda

Sono quasi pronto a distribuire un'applicazione web MVC che ho il compito di gestire (Io non ho creato l'applicazione). Il progetto è in corso di compilazione in modalità di produzione senza errori, però ho alcuni avvertimenti - 9 per la precisione

.

Ora 6 sono a che fare con il progetto di test che va bene, tuttavia ci sono due che coinvolgono il progetto Web. questi errori sono:

  

codice irraggiungibile rilevato

In entrambi i casi questi avvertimenti sono gettati sul valore di ritorno, per esempio.

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
    if (true)
    {
        return new ValidationResult("Passwords don't match", new string[] { OriginalProperty });
    }

    return null;
}

Nell'esempio precedente, la linea "di ritorno null" lancia l'avvertimento codice irraggiungibile.

Questa potrebbe essere una domanda stupida (quindi per favore vai facile ;-)), ma quanto siano importanti queste avvertenze per la funzionalità dell'applicazione? Ovviamente ci sono per un motivo, ma non sono errori, quindi dovrei essere relativamente bene a ignorarli e deploy?

È stato utile?

Soluzione

La tua condizione if restituisce sempre true (if (true)) quindi questo metodo è equivalente a:

protected override ValidationResult IsValid(object value, 
    ValidationContext validationContext)
{
    return new ValidationResult("Passwords don't match", 
        new string[] { OriginalProperty });
}

E questo è il motivo per cui si ottiene l'avviso del compilatore. L'ultima riga che restituisce il valore null non potrebbe mai essere colpito. Per quanto riguarda ignorando gli avvertimenti concerne ti consiglierei di non ignorarli. Ci sono casi in cui un messaggio di avviso potrebbe portare a un comportamento imprevisto durante il runtime. Personalmente ho controllato l'opzione in VS che tratta gli avvisi come errori per assicurarsi che non perdere mai un avvertimento.

Altri suggerimenti

Che Darin ha detto.

Questa particolare avvertimento non influenzerà l'esecuzione di tempo, prestazioni o l'affidabilità. Tuttavia, cerco di sbarazzarsi di avvertimenti in modo che, in fase di sviluppo, non ho messaggi di avviso mi distrae (come sviluppatore) da altri messaggi che potrebbe essere importante e rilevante.

Si potrebbe provare a mettere il return null in un ramo else nuova creazione del vostro if. Sarà ancora mai eseguito, ma se mai cambiare true nel if per false, ci si può comunque avere il codice corretto. Si può anche sbarazzarsi di avvertimento in questo modo.

È possibile eliminare il codice irraggiungibile senza cambiare come funziona il programma al momento.

Il problema con il codice irraggiungibile è che si potrebbe rivelare un bug.

if(something-that's-always-true) Invece di if(something-else-that's-sometimes-false), forse il programmatore vero significato. In tal caso, potrebbe essere necessario riparare il vostro condizionale. In alternativa, il bug può effettivamente essere una "caratteristica" ora che gli utenti hanno imparato ad apprezzare e cambiarla potrebbe renderli sconvolto.

O forse veramente destinata a utilizzare il if(something-that's-always-true) ma non si rendeva conto che sempre valutata al vero, così hanno scritto il codice irraggiungibile "just in case". In tal caso, è probabilmente solo eliminare il codice irraggiungibile.

Sono sicuro che ci sono altri motivi per codice irraggiungibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top