Recientemente leí esta publicación de Phil Haack (The Most Useful .NET Utility Classes Developers Tend To Reinvent Rather Than Reuse) del año pasado, y pensé que vería si alguien tiene alguna adición a la lista.Los desarrolladores de clases de utilidad .NET más útiles tienden a reinventar en lugar de reutilizar
Respuesta
Enum.Parse()
Utiliza reflection = > lento –
"reflexión => lento" es una generalización ridícula y una simplificación excesiva. Para usar el tipo, el ensamblaje ya debe estar cargado en la memoria. Por lo tanto, el "reflejo" utilizado aquí es solo obtener una referencia a una matriz existente. No podrías hacer mejor rodando el tuyo. –
Toro, ¿por qué programa .NET en absoluto? Es lento ... – Valentin
String.Format.
El número de veces que he visto
return "£" & iSomeValue
en lugar de
return String.Format ("{0:c}", iSomeValue)
o personas añadiendo signos de porcentaje - cosas por el estilo.
String.Format se implementó para los migradores de C++. return "£" e iSomeValue es mucho más fácil de escribir. Personalmente, odio String.Format. –
@Stimpy, string.Format() es mejor para la localización. –
Esto no es una localización, esto está reemplazando datos correctos con datos incorrectos. Si algo es £ 5, debería mostrar £ 5, no $ 5. £ 5 no es $ 5. –
String.IsNullOrEmpty()
Aunque hubo algunos problemas sobre IsNullOrEmpty rompiendo si en los bucles anidados hace un par de años ... –
No estoy tan seguro de recordar algo por el estilo, lo he usado en loops y algoritmos bastante anidados desde .NET 1.0 – TheXenocide
... ¡ahora dime! – bouvard
string.join() (sin embargo, casi todo el mundo conoce string.split y parece usarlo cada vez que pueden ...)
¿Por qué usaría String.Join sobre un signo más? – Karl
Supongo que está confundiendo String.Join (http://msdn.microsoft.com/en-us/library/57a79xd0.aspx) con String.Concat. (Además es un alias para este último.) –
+1. Es tonto con qué frecuencia veo a alguien reinventar la rueda creando un StringBuilder, haciendo un booleano para isFirstElement, y buscando a través de una colección, anteponiendo "," antes de cada elemento excepto el primero. Simplemente agregue los elementos a una lista
System.Text.RegularExpressions.Regex
De hecho, iría por el otro lado, donde muchas personas irán inmediatamente a una solución de expresiones regulares para un problema, incluso si hay un método no regex más simple y más rápido. –
BAH! Regex es FRIGGEN AWESOME. ¡Fuera con tu comentario desdeñoso! – Will
¡Yay por responder 4 años en el futuro! Pero vale la pena decirlo ... Regex es FRIGGEN SLOW !!!! String.Split() funciona para todo menos para las cosas más complicadas y si lo usas con las sobrecargas correctas también es bastante rápido. – TheFuzzyGiggler
Parece que a muchas personas les gusta recorrer manualmente un archivo XML para encontrar algo en lugar de utilizar XPathNaviagator.
Siempre me gusta leer el XML en una tabla de datos y luego filtrarlo. Encantadoras y encantadoras tablas de datos –
No estoy familiarizado con XML -> DataTables. ¿No requiere que el XML tenga un nivel (significa que XML fue una mala elección para los datos para comenzar) –
input.StartsWith("stuff")
en lugar de Regex.IsMatch(input, @"^stuff")
, excepto la entrada. StarsWith() tendrá un rendimiento aproximadamente 10 veces mejor. YAGNI y KISS! –
¡Hah! Estás en lo correcto. Editado para ponerlos en el orden correcto. – mmacaulay
No solo eso, sino que StartsWith() tiene una buena semántica incorporada: la persona que lee esto sabe exactamente lo que se pretende. –
Path.GetFileNameWithoutExtension(string path)
Devuelve el nombre del archivo de la cadena de ruta especificada sin la extensión.
Path.GetTempFileName()
Crea un archivo temporal de cero bytes con nombre único en el disco y devuelve la ruta completa de ese archivo.
¿GetTempFileName realmente crea un archivo de cero bytes en el disco? Qué método tan mal nombrado si ese es el caso .... – Carl
Evita las condiciones de carrera (lo que podría ser un agujero de seguridad): una vez que se devuelve el nombre del archivo, se garantiza que existe. –
El método aún está mal nombrado. Inventemos el método Path.CreateTempfile() que devuelve un nombre de archivo temporal pero no crea realmente el archivo. Va a ser malo debido a las condiciones de carrera, pero será tan bien nombrado como GetTempFileName. –
duro de codificación a/en una cadena de manipulación frente a la utilización de directorios:
IO.Path.DirectorySeparatorChar
¿Por qué no Path.Combine e ignora DirectorySeparatorChar por completo. – user7116
ha habido situaciones en las que he necesitado el personaje solo – TheXenocide
Aunque no hay una desventaja real al poner un "/" en lugar de molestar con el nombre de la variable larga. A nadie le importa Mono el 99% de las veces de todos modos. Y no veo ninguna otra buena razón para usarlo. –
materia de archivos.
using System.IO;
File.Exists(FileNamePath)
Directory.Exists(strDirPath)
File.Move(currentLocation, newLocation);
File.Delete(fileToDelete);
Directory.CreateDirectory(directory)
System.IO.FileStream file = System.IO.File.Create(fullFilePath);
System.IO.File.ReadAllText
vs escritura lógica usando un StreamReader para archivos pequeños.
System.IO.File.WriteAllText
frente a la lógica de escritura utilizando un StreamWriter para archivos pequeños.
Creo que se refería a System.IO.File.ReadAllText, System.IO.File.WriteAllText. –
La gente tiende a usar los siguientes, que es feo y destinada al fracaso:
string path = basePath + "\\" + fileName;
mejor y más segura manera:
string path = Path.Combine(basePath, fileName);
También he visto gente que escribe método personalizado para leer todos los bytes desde el archivo. Este viene bastante práctico:
byte[] fileData = File.ReadAllBytes(path); // use path from Path.Combine
Como TheXenocide señalado, mismo se aplica para File.ReadAllText()
y File.ReadAllLines()
Lo mismo para File.ReadAllText y File.WriteAllText – TheXenocide
¡Creo que debo ser una de las 5 personas que realmente los utilizan fuera de la cuba! – RCIX
Agradable. Acabo de aprender algo nuevo. – Phil
Path.Append siempre se olvida en cosas que he visto.
No hay tal método. ¿Te refieres a Path.Combine? –
La clase StringBuilder y especialmente el Método AppendFormat.
P.S .: Si usted está buscando para la medición del desempeño operaciones de cadena: StringBuilder vs. String/Fast String Operations with .NET 2.0
¡Vea la clase StringWriter también! –
Tratando de averiguar dónde vive Mis documentos en el ordenador de un usuario. Simplemente use lo siguiente:
string directory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
En VB.Net: My.Computer.FileSystem.SpecialFolders.MyDocuments –
Clase System.Diagnostics.Stopwatch
.
¡Eso es genial! No sabía que esta existía. Hace algo tan simple, pero es bueno tenerlo terminado ya. – Sambo
La mayoría de las personas se olvidan de que Directory.CreateDirectory() se degrada graciosamente si la carpeta ya existe, y la envuelve con una llamada inútil, if (! Directory.Exists (....)).
Esto no es cierto. En ASP.NET 2.0 (mi prueba), Directory.CreateDirectory (alguna ruta) lanzará una excepción si el directorio ya existe. –
Puede que ocurra algo más si arroja una excepción, como que el directorio sea de solo lectura o un ** archivo ** existente con el mismo nombre que la ruta que está intentando crear. –
Environment.NewLine
Necesito descargar algunos archivos recientemente en una aplicación de Windows. He encontrado el método DownloadFile en el objeto cliente Web:
WebClient wc = new WebClient();
wc.DownloadFile(sourceURLAddress, destFileName);
En lugar de generar un nombre de archivo con un GUID, sólo tiene que utilizar:
Path.GetRandomFileName()
- Usando DebuggerDisplay atributo en lugar de ToString() para simplificar la depuración.
- Enumerable.Range
- Tuples de FSharp.Core!
myString.Equals (anotherString)
y opciones, incluyendo los específicos de la cultura.
apuesto a que al menos el 50% de los desarrolladores escribir algo como: if (s == "id") {...}
Aunque string es un tipo de referencia, los operadores de igualdad (== y! =) Se definen para comparar los valores de los objetos de cadena, no de las referencias. Esto hace que las pruebas de igualdad de cadenas sean más intuitivas. http://msdn.microsoft.com/en-us/library/362314fe%28VS.80%29.aspx – atamanroman
Muchas de las nuevas características de Linq parece bastante desconocida:
Any<T>() & All<T>()
if(myCollection.Any(x => x.IsSomething))
//...
bool allValid = myCollection.All(
x => x.IsValid);
ToList<T>(), ToArray<T>(), ToDictionary<T>()
var newDict = myCollection.ToDictionary(
x => x.Name,
x => x.Value);
First<T>(), FirstOrDefault<T>()
return dbAccessor.GetFromTable(id).
FirstOrDefault();
Where<T>()
//instead of
foreach(Type item in myCollection)
if(item.IsValid)
//do stuff
//you can also do
foreach(var item in myCollection.Where(x => x.IsValid))
//do stuff
//note only a simple sample - the logic could be a lot more complex
Todos pequeñas funciones muy útiles que se pueden utilizar fuera de la sintaxis de LINQ.
Por todo lo que está escondido bajo el espacio de nombres Microsoft.VisualBasic, TextFieldParser es en realidad un muy buen analizador de csv. Veo a mucha gente hacer rodar los suyos (mal) o usar algo como la buena biblioteca Fast CSV en Code Plex, sin saber siquiera que esto ya está incluido en el marco.
- 1. ¿Por qué los desarrolladores de PHP son más baratos que los desarrolladores de .NET?
- 2. ¿Las clases Java más interesantes/útiles?
- 3. ¿Dónde puede liberar eensy weensy útiles pequeñas clases de .NET?
- 4. Recursos útiles para desarrolladores en Second Life
- 5. ¿Cuándo son más útiles los constructores de expresiones ASP.NET?
- 6. ¿Cuáles son los frameworks de terceros de iPhone más útiles?
- 7. reutilizar el BackgroundWorker más de una vez
- 8. clase de utilidad vs subclasificación de controles .net
- 9. Convención de nomenclatura para clases de utilidad en Java
- 10. Funciones de API nativas de jQuery más útiles
- 11. ¿Cuál es la utilidad de los constructores públicos en clases abstractas en C#?
- 12. Paquetes/bibliotecas de ActionScript más útiles
- 13. ¿Número de clases en .NET?
- 14. Organizando C# project helper o clases de utilidad
- 15. ¿Por qué los desarrolladores .NET ofrecen versiones de 32 bits/64 bits de ensamblados .NET?
- 16. ¿Por qué las clases tienden a definirse como interfaz hoy en día?
- 17. En el desarrollo de .NET, ¿cuál es el desglose de los desarrolladores de WinForms/desktop frente a los desarrolladores de ASP.NET?
- 18. ¿Las clases de ayudante/utilidad deben ser abstractas?
- 19. ¿Cómo reutilizar las clases de dominio de la aplicación Grails?
- 20. son los parámetros de validación realmente útiles?
- 21. ¿Es aceptable utilizar una clase de utilidad "real" en lugar de burlarse en TDD?
- 22. ¿Cómo reutilizar el socket en .NET?
- 23. Haskell: ¿Qué mónada acabo de reinventar?
- 24. Cuando los bloques son más útiles que las funciones (ruby)?
- 25. Diferencia entre las clases de utilidad y auxiliar
- 26. ¿Los desarrolladores de javascript necesitan saber jquery?
- 27. Utilidad de JNI
- 28. .NET clases parciales frente a la herencia
- 29. ¿Crees que las propiedades genéricas serían útiles en .NET?
- 30. ¿La última biblioteca de utilidad de directorio y archivo .NET?
Esto debería ser CW – abatishchev
posible duplicado de [Clases de biblioteca de clases base ocultas .NET?] (Http://stackoverflow.com/questions/122784/hidden-net-base-class-library-classes) –