Este blog es un resumen de todo lo que se pudo ver en la ultima charla a la que asistí en devintersection sobre C#. Esta está relacionada a mejorar el código de C# para poder escribir mejores aplicaciones.
Números float/double
Deben ser usados solo cuando no se requiere de un valor exacto y no se espera que sea totalmente correcto. Existe una cantidad de decimales que pueden tener algunas diferencias.
Podemos buscar en configuraciones avanzadas una opción de check for aritmathid overflow para poder generar excepciones cuando un int llega a su límite y debería de disparar un error en lugar de continuar asignando valores. Estos valores van a hacer negativos.
Si hacemos una división usando ints datos siempre vamos a tener un resultado entero no se va a generar decimales.
No está bueno encontrar números negativos en los ids de la base de datos. Esto podría ser un problema con los enteros que cuando llegan a su limite inician a generar números negativos.
Los string deberían estar usando el current culture para poder tener mejores resultados. En .net6 hay una forma de usar esto utilizando CultureInfo.InvariantCulture esto para que se puedan comparar las cosas con la cultura que está utilizando cada uno de los diferentes dispositivos.
Existen nuevas mejoras en las funciones lamnda que pueden mejorar la productividad de nuestro desarrollo de aplicaciones.
Unas de las nuevas utilidades es un switch dentro del valor de retorno de los métodos. Esta sintaxis esta muy diferente y útil para hacer tareas y el código se va a reducir mucho. Este se llama switch expresión. Con este switch extensión se puede tener más de una sola validación. Esta característica permite tener otros swtich anidados. Se puede usar la expresión con propiedades. Además, tiene capacidades para hacer otro tipo de filtros como el uso de when dentro de la declaración del switch.
Podemos desarrollar funciones que no ocupan toda la declaración normal de un método la cual se puede llamar desde cualquier lado como un método normal. Estas funciones retornan algún valor por medio del valor de retorno.
Utilizar async en las tareas nos puede hacer que el código sea más eficiente y que corra de una forma más rápido si tenemos varias tareas. Se puede usar la tarea asyn Task.WhenAll. en este caso se pasa todas las tareas que se quieren esperar a terminar.
Es bueno tratar de evitar async void.
No usar .Result con async functions
No usar .Wait
Se tiene que usar siempre el awiat para esperar resultados buenos de los métodos, pero no usar ninguna otra forma de respuesta ya que no funcionara de la mejor forma.
Si se tiene disponible length mejor usar esto que count ya que es mucho más lento para hacer la búsqueda de cuantos elementos tenemos.
Con el cierre de la charla realizamos un ejercicio de lluvia de ideas con el siguiente resultado
Wrap-up
- Shortcut for alt+shift+down – column selection
- Switch expression patterns
- Async exception handling
- Reducing complexity (more switch patterns)
- Diff between async on web and desktop
- Readability of switch patterns (especially with tuples)
- Arithmetic overflow not checked by default, but you can turn it on
- Regular expressions in replace
- Don’t do date math
- Learning about aggregate exceptions for async
- Even people at Microsoft make mistakes
- Async in web apps to increase throughput
- Methods like wait and from result that you should be careful with
- Dividing by zero with doubles
- Decimals for base ten math
- Consider what type you want to use
- M suffix for the decimal
- Overloads for int16/int32
- Hierarchies and overloads
- Avoid async void
- Interpolated string holes may not be evaluated, use pure methods
- Infinity
- WhenAll
- Local method
- Overloads with generics win
- 2022 intellicode tab completion
- Minus zero is a thing
- Learning includes breaking old associations
- Overloads should do the same thing as much as possible
- Decimals is slower than double
- No such a thing as a silly idea. It is ok to be wrong
- Pattern matching for collections
- Only use async void on event handlers
- Count is slower than length
Thank you for any other fantastic article. The place else may anybody get that kind of information in such a perfect means of writing? I’ve a presentation next week, and I am on the search for such information.
We stumbled over here coming from a different web page and thought I may as well check things out. I like what I see so now i’m following you. Look forward to going over your web page yet again.