Job opportunities

Good practices in .NET

Cita
As a .NET developer, you know that code must be clean, efficient, and maintainable. Learn about good practices and why they do matter.

¿Si eres un desarrollador.Net ya sabrás que es muy importante escribir un código limpio, eficiente y que pueda mantenerse, entonces te preguntas que son esas buenas prácticas y por qué realmente importan?.

Dos razones de mucho peso:

Paz
Tu paz mental
Cliente Feliz

Además, no solo se trata de escribir código, se trata de que tu código comunica algo, que ese algo se pueda leer, y permita a otros desarrolladores entenderlo, y no solo a otros, sino que para ti mismo también, yo por ejemplo no sé qué comí la semana pasada, hay cosas que mi cerebro no almacena, y si eres como yo, estoy segura de que un código limpio te ayudará más de los crees, porque aunque tú seas el creador de ese código, mañana puede que no te acuerdes de todos los detalles, en realidad un trozo de código no se queda allí y se olvida, sino que va evolucionando conjuntamente con tu aplicación, dicho esto, comencemos:

1. Sigue la convención de nombres

Usa PascalCase para los nombres de las clases, métodos y propiedades públicas, además usa CamelCase para variables locales y parámetros, también recuerda que las propiedades privadas se agrega un guion bajo.

Evita esto:

No hace falta agregar el Planet a todo, ya se sabe que el nombre que está allí solo puede ser el del planeta.

Mejor esto:

Las propiedades ya saben implicitamente que son del planeta, los parametros van con minusculas.

2. Intenta usar nombres más descriptivos

Elige nombres que indiquen con precisión el propósito o funcionalidad de tu código.

Evita esto:

Yo leo eso y no se si estan vacias o informadas las lineas.

Mejor esto:

Estan vacias? si / no.

3. Mantente actualizado con la última versión de .Net

Actualiza tu proyecto con la última versión de .NET ya sea la versión 6, core o framework porque esto podría optimizar el rendimiento, la seguridad y el mantenimiento de tu aplicación. Recuerda que .NET Framework 4.8 será la última versión, ahora se recomienda por Microsoft actualizar .NET 6 ó 7, entonces .NET Core su última versión ha sido 3.1, y luego cambió a .NET 5 (como una fusion entre framework 4.8 y core 3) es decir que ahora debemos utilizar el .NET (Core) 6 en adelante, como recomendación de sus creadores.

Esta información corresponde al 2023.
Ahora es .NET a secas con con su número de versión (OpenSource).

4. Sigue los principios SOLID

¿Está ya la veías venir a que sí? primero que nada recuerda que SOLID son principios (reglas y/o recomendaciones) no es un patrón, la diferencia es que SOLID te da unas pautas a seguir para evitar un mal diseño, la solución puede tener varios caminos, es decir tú lo adaptas a la necesidad del requerimiento, mientras que un patrón te dice exactamente cómo se ha de resolver aquello.

Robert C. Martin: Agile Software Development, Principles, Patterns, and Practices

¿Por qué es importante aplicar este principio?

  • Facilita los test.
  • Reduce el acoplamiento.
  • Elimina duplicidades.
  • Incrementa la comprensión del código.
  • Incrementa su capacidad de extenderse.

4.1 SINGLE RESPONSABILITY

Evita esto:

Esta clase solo le importa el cafe, no deberia ni guardarlo ni enviar notificaciones.

Mejor esto:

Aqui solo me interesa toda aquello que a café corresponde.
En mi repositorio de café hago el CRUD.
Una clase solo para mis notificaciones.

4.2 Open/Close

Evita esto:

Sería un dolor de cabeza cuando se agregan más clases para guardar..

Mejor esto:

Cuando llegue una clase C, no hay que modificar nada, solo se extiende.

4.3 Liskov.

Va de esto más o menos:

Veamos algo más o menos situado a la realidad:

Tenemos una clase padre que es hacer una transferencia de dinero y una clase hija que es una transferencia internacional.

Hasta aquí todo bien, vemos que podemos sustituir el padre por el hijo, pero ¿qué pasa si queremos hacer un Bizum(o sea otra hija)?, ya sabemos que este no tiene ningún cobro de comisión.

Al intentar sustituir el padre por el otro hijo que sería el bizum, tenemos un error.

Esto pasará cuando intente calcular las comisiones, y rompemos Liskov.

Entonces para hacer cumplir Liskov debemos crear una clase como un segundo padre que herede de MoneyTransfer, ahora tendremos como dos clases padre.

Una de las hijas hereda del padre que más se acople a su necesidad.

Y la otra también.

Ahora sí, podemos hacer sustituciones y no rompemos su funcionamiento 🙂

4.4 Interface Segregation

Evita esto:

Interfaz con los diferentes deportes.
El duathlon corren y pedalean, no saltan, no nadan.
En la Marathon solo se corre, y lo demas nada.
El triathlon se nada, corre y pedalean, sin saltar.

Entonces no podemos implementar todos los métodos, así que mejor intenta algo así:

Mejor varias interfaces pequeñas y concisas.
Y se implementa la interfaz que corresponde.

4.5 Dependency Inversion

Evita esto:

El servicio está fuertemente acoplado al repositorio, mira ese new SalesRepository().

Unas de las formas de lograr DIP (Dependency Inversion Principle) es a través de Inyección de Dependencias.

Mejor esto:

ahora ya estamos desacoplados, gracias a la interfaz del repositorio.

5. Implementa un buen manejo de errores

Cuando estés desarrollando, intenta pensar que podría salir mal, eso te llevará a controlar un tipo de error, crea tus propias excepciones para que puedas controlarlas, y evita a medida de lo posible capturar la System.Exception, esa es muy genérica y úsala solo si es estrictamente necesario.

Evita esto:

Mejor esto:

6. Usa async/await:

Tus peticiones serás más eficientes.

Evita esto:

Mejor esto:

7. Crear un sistema de Logs

Te ayudará a identificar y diagnosticar problemas en tu aplicación, intenta registrar solo la información más relevante y evita guardar en log información confidencial.

8. Usa LINQ

Te ayudará a simplificar y comprender más la query.

9. Haz test unitarios y de integración

Las pruebas unitarias demuestran que la lógica de tu código está bien hecha y que funcionará en todos los casos, también sirven como documentación del proyecto.

Los test permiten refactorizar el código más adelante y tener la garantía de que el módulo sigue funcionando correctamente, debes hacer el hábito de realizar pruebas regularmente mientras programas, de lo contrario tendrás más dificultad para encontrar errores, por el contrario, si tiene buena cobertura en tus test será más fácil corregir.

10. Invierte en ti

Y, por último, pero no menos importante invierte en ti, dedica unas horas a la semana a actualizar y mejorar tus conocimientos, tendrás más confianza.

Las habilidades y conocimientos que obtenga te encaminarán hacia el logro de sus objetivos personales y profesionales.

Conclusión

Parece mucha información, pero en realidad no es tanto, ya verás, aplica como minino estos pasos, y tu código será más reutilizable, más limpio, más eficiente, y te hará sentir muy bien al final del día.

Además, no somos perfectos y a lo mejor no siempre escribamos código impecable, pero te servirá para detectar tus fallos y seguir creciendo.

“Truth can only be found in one place: the code.”
― Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship

-Kim M.

Scroll al inicio

It sets our course as a company and inspires our decisions to achieve the following fundamental goals:

  • Contribute to the successful execution of innovative and transcendent technological projects.

  • Establish fluid communication with our internal and external stakeholders (employees, suppliers, clients and other collaborators).

  • To be the indispensable and trusted partner of our clients for the outsourcing of their high added value activities.

Our mission

The history behind Oxigent

Pixie’s Journey started in 2007 in Dublin, Ireland, with the goal to become a key SAP player on the European contract recruitment market. Firstly focusing on integrators and end-users of SAP solutions, the company decided to expand its expertise in terms of technologies launching new companies and teams in Europe and abroad, and finally setting up a holding company: Kube Partners. Nowadays, the group operates worldwide from its offices in Spain, France and the USA.
Oxigent Technologies was founded as a Kube subsidiary in June, 2019 to offer local tech services to multinational companies. Our clients rely upon Oxigent teams for carrying-out their most strategic activities, and Oxigent consultants are given the opportunity to be actors of the tech revolution that characterizes our world and time. During its first two years of life, Oxigent experienced a relentless growth of its business and talent teams in order to reach more and wider clients, as well as to offer new horizons to engineers eager to continuously improve. At the end of 2021, we were 80 employees and had a 30+ clients portfolio.
In 2022, we expanded our social benefits and sharpened our commitment with sustainability (ODS certification). In 2023, we already were 200+ professionals and could rely on a strong portfolio of more than 50 clients. By the end of 2024, we will hopefully surpass 250 people. We are still at the beginning of our journey and will keep doing consulting in a different way, that's our recipe for success.
2007 - 2019
2019 - 2021
2022 - Onward