La maggior parte delle volte vorrai dei metodi. Ma ricorda che i metodi implicano tutti i tipi di spese generali. Quindi, se non hai per usare i metodi, usare le funzioni C può essere una scelta intelligente.
Devi scegliere i metodi se:
-
altro codice accederà direttamente a tale funzionalità. I metodi sono un modo conveniente per le funzioni di namespace; il modo in cui C di aggiungere prefissi criptici non viene ridimensionato.
-
la tua architettura richiede l'invio dinamico. Il pattern Visitor è un ottimo esempio di questo.
-
la tua funzionalità è un comportamento semantico di un oggetto. I getter / setter sono un esempio di tale funzionalità.
Dovresti scegliere le funzioni C se:
-
le prestazioni sono fondamentali. Chiamare una funzione C tende ad essere più economico di invocare un metodo. Le funzioni matematiche di supporto potrebbero essere un esempio.
-
nessun altro codice utilizzerà questa funzionalità: è un helper interno.
-
la funzionalità non richiede funzionalità OOP come la chiamata dinamica da chiamare. Può ancora chiamare internamente metodi su oggetti. Cioè, stai scrivendo una procedura o una subroutine, non un metodo.
-
le tue funzionalità sono semanticamente alcune operazioni che solo casualmente capita di avere oggetti come argomenti. Cioè il soggetto di interesse è l'azione, non l'oggetto.
Se avessi un "metodo" private static
per quella funzionalità in Java, è estremamente probabile che questa dovrebbe essere una funzione C in Objective-C.