Me interesaría algunos ejemplos de c # antes y después, algunos ejemplos no idiomáticos vs idiomáticos. Los ejemplos que no sean de C # también estarían bien si transmiten la idea. Gracias.
Me interesaría algunos ejemplos de c # antes y después, algunos ejemplos no idiomáticos vs idiomáticos. Los ejemplos que no sean de C # también estarían bien si transmiten la idea. Gracias.
Respuestas:
Idiomático significa seguir las convenciones del idioma. Desea encontrar las formas más fáciles y comunes de realizar una tarea en lugar de transferir sus conocimientos de un idioma diferente.
Python no idiomático usando un bucle con agregar:
mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
newlist.append(i * 2)
Python idiomático usando una lista de comprensión:
mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist]
Algunos ejemplos:
Gestión de recursos , no idiomática:
string content;
StreamReader sr = null;
try {
File.OpenText(path);
content = sr.ReadToEnd();
}
finally {
if (sr != null) {
sr.Close();
}
}
Idiomático:
string content;
using (StreamReader sr = File.OpenText(path)) {
content = sr.ReadToEnd();
}
Iteración , no idiomática:
for (int i=0;i<list.Count; i++) {
DoSomething(list[i]);
}
También no idiomático:
IEnumerator e = list.GetEnumerator();
do {
DoSomenthing(e.Current);
} while (e.MoveNext());
Idiomático:
foreach (Item item in list) {
DoSomething(item);
}
Filtrado , no idiomático:
List<int> list2 = new List<int>();
for (int num in list1) {
if (num>100) list2.Add(num);
}
idiomático:
var list2 = list1.Where(num=>num>100);
El código idiomático es un código que realiza una tarea común de la manera común para su idioma. Es similar a un patrón de diseño, pero a una escala mucho menor. Los modismos difieren ampliamente según el idioma. Un modismo en C # podría ser usar un iterador para iterar a través de una colección en lugar de recorrerla. Otros lenguajes sin iteradores pueden depender del lenguaje de bucle.
En términos prácticos, significa escribir código de forma coherente, es decir, todos los desarrolladores que trabajan en su base de código deben seguir las mismas convenciones al escribir construcciones de código similares.
Entonces, la forma idiomática es la forma que coincide con el estilo del otro código, la forma no idiomática significa que está escribiendo el tipo de función pero de una manera diferente.
Por ejemplo, si está repitiendo un cierto número de elementos, puede escribir el bucle de varias formas:
for (int i = 0; i < itemCount; i++)
for (int i = 1; i <= itemCount; i++)
for (int i = 0; i < itemCount; ++i)
etc
Lo más importante es que el estilo elegido se utilice de forma coherente. De esa manera, las personas se familiarizan y se sienten más seguras de cómo usarlo, y cuando espías un uso que se ve diferente, puede ser una señal de que se está introduciendo un error, tal vez un error por un error, p.
for (int i = 1; i < itemCount; i++)