Questa domanda è ispirata dalla risposta di Mike Nakis a una domanda che ho chiesto in precedenza: Un calcolatore dovrebbe essere un tipo di valore o un tipo di entità? . Si prega di consultare il codice qui sotto:
public class Calculator
{
private readonly int Number1;
private readonly int Number2;
private readonly int Answer;
public Calculator(int _Number1, int _Number2)
{
Number1 = _Number1;
Number2 = _Number2;
Answer = Add();
}
private int Add()
{
return Number1 + Number2; //plus 30 lines of code
}
}
Notate che ci sono due variabili di istanza chiamate: Number 1 e Number 2. Funzionerebbe anche (dove entrambi i numeri sono variabili locali):
public class Calculator
{
public int Add(int Number1,int Number2)
{
return Number1 + Number2; //plus 30 lines of code
}
}
Comprendo la differenza tra variabili di istanza e variabili locali, ad esempio stack e heap; ambito ecc.
Quando si progetta un sistema (UML); come si decide se utilizzare una variabile locale o una variabile di istanza. I fattori che posso pensare sono i seguenti:
1) Più facile per rendere una chiamata immutabile
Il motivo per cui lo chiedo è perché ho letto un sacco di domande qui dove penso che dovrebbe essere usata una variabile di istanza; tuttavia viene utilizzata una variabile locale. Esiste una regola che non conosco simile a: "Utilizza l'aggregazione sull'ereditarietà".
Sto parlando rigorosamente dal punto di vista del DDD e delle migliori pratiche. Mi rendo conto che questo non si applica sempre nel mondo reale a causa dei limiti di tempo ecc.