Sarei interessato ad alcuni esempi c # prima e dopo, alcuni esempi non idiomatici e idiomatici. Anche gli esempi non c # andrebbero bene se trasmettessero l'idea. Grazie.
Sarei interessato ad alcuni esempi c # prima e dopo, alcuni esempi non idiomatici e idiomatici. Anche gli esempi non c # andrebbero bene se trasmettessero l'idea. Grazie.
Risposte:
Idiomatico significa seguire le convenzioni della lingua. Desideri trovare i modi più semplici e comuni per svolgere un'attività piuttosto che trasferire le tue conoscenze da una lingua diversa.
python non idiomatico usando un ciclo con append:
mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
newlist.append(i * 2)
pitone idiomatico che utilizza una comprensione delle liste:
mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist]
Qualche esempio:
Gestione delle risorse , non idiomatica:
string content;
StreamReader sr = null;
try {
File.OpenText(path);
content = sr.ReadToEnd();
}
finally {
if (sr != null) {
sr.Close();
}
}
Idiomatico:
string content;
using (StreamReader sr = File.OpenText(path)) {
content = sr.ReadToEnd();
}
Iterazione , non idiomatica:
for (int i=0;i<list.Count; i++) {
DoSomething(list[i]);
}
Anche non idiomatici:
IEnumerator e = list.GetEnumerator();
do {
DoSomenthing(e.Current);
} while (e.MoveNext());
Idiomatico:
foreach (Item item in list) {
DoSomething(item);
}
Filtrante , non idiomatico:
List<int> list2 = new List<int>();
for (int num in list1) {
if (num>100) list2.Add(num);
}
idiomatico:
var list2 = list1.Where(num=>num>100);
Il codice idiomatico è un codice che svolge un'attività comune nel modo comune per la tua lingua. È simile a un modello di progettazione, ma su scala molto più piccola. I modi di dire differiscono ampiamente in base alla lingua. Un idioma in C # potrebbe essere quello di utilizzare un iteratore per iterare in una raccolta anziché eseguire il ciclo attraverso di essa. Altre lingue senza iteratori potrebbero fare affidamento sull'idioma del ciclo.
In pratica, significa scrivere codice in modo coerente, cioè tutti gli sviluppatori che lavorano sulla tua base di codice dovrebbero seguire le stesse convenzioni quando scrivono costrutti di codice simili.
Quindi il modo idiomatico è il modo in cui corrisponde allo stile dell'altro codice, il modo non idiomatico significa che stai scrivendo il tipo di funzione ma in un modo diverso.
ad esempio, se stai ripetendo un certo numero di elementi, potresti scrivere il ciclo in diversi modi:
for (int i = 0; i < itemCount; i++)
for (int i = 1; i <= itemCount; i++)
for (int i = 0; i < itemCount; ++i)
eccetera
La cosa più importante è che lo stile scelto sia usato in modo coerente. In questo modo le persone diventano molto familiari e sicure di come usarlo, e quando spii un utilizzo che sembra diverso può essere un segno di un errore introdotto, forse un errore di un errore, ad es.
for (int i = 1; i < itemCount; i++)