Quando i metodi usano una connessione al database, la connessione deve essere un campo statico, un campo istanza o una variabile locale?
Ecco i miei dubbi. Ho scelto i dithering corretti e che sono privi di fondamento. Ho cercato di dare delle fonti alle mie supposizioni, ma la maggior parte di esse deriva da cose che ho letto qua e là, e probabilmente non ho capito bene:
static
campi:
Pros:
- DRY - You can use the connection from any class.
- Shorter code (not always a good thing).
Cons:
- This is practically creating a global variable*, which is considered bad in OOP.
*Perhaps you could refer to the connection as global constant which is not concidered bad programming?- Sometimes fields are referred as states since they describe the state of the class. But logically, the connection do not describe the class, the class's methods just use it.
campi di istanze:
Pros:
- DRY - You can use the connection from any method in the class.
- Shorter code (Again, not always good).
Cons:
- Again, logically, the connection does not describe the object, the object's methods just use it.
variabile locale (metodo):
Pros:
- Methods open the connection only when they need it*.
*Although, even using a field, you could use theusing
statement to close the connection when needed.Cons:
- DRY - Very repetitive code.
Quindi, come ho detto, posso vedere i vantaggi e gli svantaggi dei tre approcci. Ma qual è l'approccio più comune e, cosa più importante, l'approccio più accurato dal punto di vista dell'OOP? E quale approccio porta a prestazioni migliori?
Grazie.