Una funzione può essere utilizzata anche in un'espressione. Una subroutine non può. Le funzioni possono migliorare la leggibilità del codice rispetto a una subroutine.
Ecco un esempio di come una funzione può aumentare la leggibilità:
If AccountIsLocked("JJones") then Msgbox("This account is locked")
questa funzione sarebbe definito da qualche parte
public function AccountIsLocked(UserId as string) as boolean
dim usr = uow.AccountRepository.UserInfo(UserId)
return usr.locked
end function
Ecco lo stesso esempio, ma codificato con una subroutine:
CheckIfAccountLocked("JJones")
e altrove questo sottotitolo è definito:
public sub CheckIfAccountLocked(UserId)
if uow.AccountRepository.UserInfo(UserId).locked then
msgbox("Account is locked")
end if
end sub
Si noti inoltre che il controllo del valore è separato dall'azione - questo contribuisce alla separazione dei compiti. La funzione si presterebbe alla riutilizzabilità.
Con VB6 ci sono alcune regole dispari che governano la parentesi. Se non ci sono parametri per un sottotitolo, la parentesi non è necessaria (penso che Visual Studio potrebbe rimuovere la parentesi). Un modo per aggirare questo è aggiungere la parola chiave "Chiama" prima del tuo sottotitolo.
Call CheckIfAccountLocked()
vs
CheckIfAccountLocked
fonte
2014-11-18 16:33:57
in Excel solo 'Subs' sono disponibili per l'assegnazione alle forme nella assegnazione msgbox macro. – SAm