22/07/2023 - amorosik ha scritto:
A mio parere e' piu' logica l'IF con la Else, per due motivi:
1- eviti un'assegnazione iniziale che potrebbe rivelarsi inutile (spreco tempo)
2- eviti di assegnare un valore ad una funzione senza sapere nulla (errore concettuale)
D'altra parte ci sono delle motivazioni che sostengono anche il pro dell'assegnazione iniziale del NO, potrebbe essere vista come una sicurezza aggiuntiva, e personalmente anch'io uso spesso scrivere in quel modo, che so essere una scrittura ridondante ma come dicono da noi “…mejo stare dalla parte del fromenton…”
Una rete di sicurezza nel caso il confronto alla riga successiva vada in errore per qualche motivo e quindi l'istruzione IF… non venga completata come ci si attende
No non è così, come ho detto il ragionamento si adatta più coerentemente con una gestione standard di BOOLEAN:
Public Function fCheck(StringaPath As String) As Boolean
fCheck= Dir(StringaPath, vbDirectory) <> vbNullString
End Function
Le variabili Boolean sono di Default FALSE e non serve assolutamente confermare il FALSE lo è già se non lo modifichi e lo modifichi se hai la condizione… spiega che senso può avere confermare il DEFAULT VALUE…!
In qualsiasi modo questa funzione, per il Boolean, valida sia il True che il False
Nello stesso modo si può ragionare per una “anomala” funzione che elabora uno String, l'assegnazione di un valore è indiscutibile sia meno oneroso di una condizione…, se metti in discussione questo abbiamo un problema tecnico.
La questione della gestione errori è un'altra cosa, ma ancora in questi casi è una cosa poco influente in modo concreto, la funzione deve restituire True/False quindi in questi specifici frangenti l'uso di On Error Resume Next è l'ideale.