Ich würde mich für einige Vorher-Nachher-Beispiele interessieren, einige nicht-idiomatische vs idiomatische Beispiele. Nicht-C# Beispiele wären auch gut, wenn sie die Idee vermitteln. Vielen Dank.Was ist idiomatischer Code?
Antwort
Idiomatisch bedeutet, den Konventionen der Sprache zu folgen. Sie möchten die einfachsten und gebräuchlichsten Methoden zum Ausführen einer Aufgabe finden, anstatt Ihr Wissen aus einer anderen Sprache zu portieren.
nicht-idiomatische Python eine Schleife mit append mit:
mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
newlist.append(i * 2)
idiomatische Python eine Liste Verständnis mit:
mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist]
Idiomatischer Code ist ein Code, der eine allgemeine Aufgabe für Ihre Sprache erfüllt. Es ist ähnlich einem Designmuster, aber in einem viel kleineren Maßstab. Idiome unterscheiden sich stark nach Sprache. Ein Idiom in C# könnte darin bestehen, einen Iterator zu verwenden, um eine Sammlung zu durchlaufen, anstatt sie zu durchlaufen. Andere Sprachen ohne Iteratoren können sich auf das Schleifen-Idiom verlassen.
Einige Beispiele:
Ressourcenmanagement, nicht idiomatischen:
string content;
StreamReader sr = null;
try {
File.OpenText(path);
content = sr.ReadToEnd();
}
finally {
if (sr != null) {
sr.Close();
}
}
Idiomatic:
string content;
using (StreamReader sr = File.OpenText(path)) {
content = sr.ReadToEnd();
}
Iteration, nicht idiomatischen:
for (int i=0;i<list.Count; i++) {
DoSomething(list[i]);
}
Auch nicht-idiomatische:
IEnumerator e = list.GetEnumerator();
do {
DoSomenthing(e.Current);
} while (e.MoveNext());
Idiomatic:
foreach (Item item in list) {
DoSomething(item);
}
Filtern, nicht-idiomatische:
List<int> list2 = new List<int>();
for (int num in list1) {
if (num>100) list2.Add(num);
}
idiomatische:
var list2 = list1.Where(num=>num>100);
Die Zahnspange ist idiomatisch Java ;-) –
Praktisch bedeutet es Code in einer konsistenten Art und Weise zu schreiben, dh alle Entwickler, die sollten auf Ihrer Code-Basis arbeiten folgen die gleichen Konventionen beim Schreiben ähnlicher Code-Konstrukte.
So ist die idiomatische Art und Weise, die den Stil des anderen Codes entspricht, bedeutet nicht-idiomatische Weise, dass Sie die Art der Funktion aber auf eine andere Weise schreiben.
z.B. wenn Sie eine bestimmte Anzahl von Elementen sind Looping, könnten Sie die Schleife auf verschiedene Weise schreiben:
for (int i = 0; i < itemCount; i++)
for (int i = 1; i <= itemCount; i++)
for (int i = 0; i < itemCount; ++i)
etc
Was am wichtigsten ist, dass der gewählte Stil konsequent verwendet wird. Auf diese Weise werden die Leute sehr vertraut und vertraut mit ihrer Verwendung, und wenn Sie eine Verwendung ausspionieren, die anders aussieht, kann dies ein Zeichen dafür sein, dass ein Fehler eingeführt wird, vielleicht ein Fehler nach dem anderen, z.
for (int i = 1; i < itemCount; i++)
Ich denke, ich dachte, idiomatische bedeutet "der beste Weg" im Gegensatz zu nur einem willkürlichen Standard. Aber ich denke, der beste Weg hängt vom Kontext ab. – MrBoJangles
In PHP begegne ich manchmal Code wie:
foreach ($array as $value) {
$trimmed[] = trim($value);
}
return $trimmed;
die mit idiomatisch umgesetzt werden können:
return array_map('trim', $array);
- 1. Was ist idiomatischer?
- 2. idiomatischer Schnelltest für Optionsset?
- 3. Idiomatischer erfolgreicher Rückruf in Node.js
- 4. Was ist Code Coverage?
- 5. Was ist "spaltenunabhängiger Code"?
- 6. Was ist nativer Code?
- 7. Was ist ein idiomatischer Weg, um einen Iterator getrennt durch Leerzeichen in Rust zu drucken?
- 8. Was ist ein idiomatischer Weg, um die Verbindung zum Redis-Abonnement in Go wiederherzustellen?
- 9. idiomatischer Weg Ebene eines kategorischen Faktor
- 10. Was ist "nur mein Code"?
- 11. Was ist "Bench-Test-Code"?
- 12. Was ist MediaPlayer.OnInfoListener "Code 703"?
- 13. was ist falsch mein Code?
- 14. Idiomatischer Beweis durch Widerspruch in Isabelle?
- 15. Was ist ein idiomatischer Weg, um einen vom Benutzer bereitgestellten Puffer beim Lesen von Bytes zu füllen?
- 16. Was ist mit diesem Code bricht PHP4?
- 17. Was ist falsch in diesem Javascript-Code?
- 18. Was ist das PHP-Code in VB.net
- 19. Was ist das seltsame C-Code-Format?
- 20. Was ist die Arbeit von unten Code?
- 21. Was ist falsch in meinem Zkoss-Code?
- 22. Was ist Code Access Security in .NET
- 23. Was ist falsch mit meinem MouseUp-Code?
- 24. Was ist das Problem in diesem Code?
- 25. Was ist diese Art von CSS-Code?
- 26. Was ist in diesem Code falsch?
- 27. Was ist los mit diesem lenker.js code?
- 28. Code-Repository. Was ist ein guter?
- 29. Was ist die Definition von "Legacy-Code"?
- 30. Was ist die Komplexität dieses Code-Snippets?
Wie ich eine negative erhalten tun, das ist eine verdammt gute Frage! – MrBoJangles
Einverstanden, gute Frage mit ein paar netten Antworten. –
[Versteckte Funktionen von C#] (http://StackOverflow.com/q/9033/4830) ist voll von idiomatischen C#. Nicht Sie alle, aber viele der einfachen Einzeiler mit einer hohen Anzahl von Upvotes könnten als idiomatisch betrachtet werden. Und einige Antworten beschreiben auch die nicht-idiomatischen Alternativen. –