<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: antonio.nicasio.herrera@gmail.com</title>
    <description>The latest articles on DEV Community by antonio.nicasio.herrera@gmail.com (@xocedev).</description>
    <link>https://dev.to/xocedev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F131134%2Fd23ec56d-15fe-43f4-b211-21bf28982491.jpg</url>
      <title>DEV Community: antonio.nicasio.herrera@gmail.com</title>
      <link>https://dev.to/xocedev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xocedev"/>
    <language>en</language>
    <item>
      <title>Evita usar UpperCase o LowerCase C#</title>
      <dc:creator>antonio.nicasio.herrera@gmail.com</dc:creator>
      <pubDate>Sun, 28 Jan 2024 16:15:45 +0000</pubDate>
      <link>https://dev.to/xocedev/evita-usar-uppercase-o-lowercase-c-cdj</link>
      <guid>https://dev.to/xocedev/evita-usar-uppercase-o-lowercase-c-cdj</guid>
      <description>&lt;p&gt;🚫 𝗖𝗼𝗱𝗲 𝗦𝗺𝗲𝗹𝗹&lt;br&gt;
✔** Usar string.𝗘𝗾𝘂𝗮𝗹𝘀 en lugar de 𝗧𝗼𝗨𝗽𝗽 𝗲𝗿()/𝗧𝗼𝗟𝗼𝘄𝗲𝗿() cuando comparamos cadenas de texto**.&lt;/p&gt;

&lt;p&gt;🐌 El uso de 𝗧𝗼𝗨𝗽𝗽𝗲𝗿() y 𝗧𝗼𝗟𝗼𝘄𝗲𝗿() para la conversión de casos en C# puede afectar el rendimiento debido a la asignación de memoria, la copia de cadenas y la posible recolección de basura, especialmente en situaciones que involucran cadenas grandes o conversiones frecuentes.&lt;/p&gt;

&lt;p&gt;🚀 𝗦𝘁𝗿𝗶𝗻𝗴.𝗘𝗾𝘂𝗮𝗹𝘀 es más rápido que ToUpper() o ToLower() debido a la comparación directa de caracteres, evitando la asignación de memoria y reduciendo la sobrecarga para la comparación de cadenas que no distingue entre mayúsculas y minúsculas.&lt;/p&gt;

&lt;p&gt;🔥 Para realizar una comparación de cadenas, es mejor utilizar los métodos de comparación integrados como 𝗦𝘁𝗿𝗶𝗻𝗴.𝗘𝗾𝘂𝗮𝗹𝘀 con las opciones apropiadas de StringComparison, que manejan correctamente la distinción entre mayúsculas y minúsculas y las consideraciones culturales mientras mantienen un mejor rendimiento y precisión.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gracias por leer&lt;/strong&gt; 📖&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxda03txgzisjpk1uuda8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxda03txgzisjpk1uuda8.png" alt="Image description" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tip</category>
      <category>csharp</category>
      <category>cleancode</category>
      <category>aspnet</category>
    </item>
    <item>
      <title>Tip del Dia en C#</title>
      <dc:creator>antonio.nicasio.herrera@gmail.com</dc:creator>
      <pubDate>Thu, 25 Jan 2024 21:41:14 +0000</pubDate>
      <link>https://dev.to/xocedev/tip-del-dia-en-c-fp8</link>
      <guid>https://dev.to/xocedev/tip-del-dia-en-c-fp8</guid>
      <description>&lt;p&gt;🏅 Código limpio&lt;br&gt;
✔ C#: Usar registros para DTO&lt;/p&gt;

&lt;p&gt;❇ Los registros son una característica introducida en C# 9.0 que permite crear tipos de datos simples e inmutables. Son especialmente útiles para representar DTO (objetos de transferencia de datos) porque proporcionan una sintaxis concisa para definir las clases que se utilizan principalmente para transferir datos entre capas de una aplicación, como entre la capa de lógica empresarial y la capa de presentación.&lt;/p&gt;

&lt;p&gt;❇ Los registros son más adecuados para estructuras de datos simples y no están pensados para reemplazar las clases en todos los escenarios. En el caso de tipos más complejos con comportamiento, es posible que desee usar clases normales u otras características proporcionadas por C#.&lt;/p&gt;

&lt;p&gt;❇ Los registros son una excelente opción para crear DTO debido a su simplicidad, inmutabilidad y sintaxis concisa, lo que ayuda a escribir código limpio y fácil de mantener.&lt;/p&gt;

&lt;p&gt;Gracias por leer 😊&lt;/p&gt;

&lt;p&gt;Ejemplo en Código:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw11jpnpewgp40ym0web.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw11jpnpewgp40ym0web.png" alt="Image description" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tip del Dia en C#</title>
      <dc:creator>antonio.nicasio.herrera@gmail.com</dc:creator>
      <pubDate>Tue, 23 Jan 2024 16:41:04 +0000</pubDate>
      <link>https://dev.to/xocedev/tip-del-dia-en-c-neb</link>
      <guid>https://dev.to/xocedev/tip-del-dia-en-c-neb</guid>
      <description>&lt;p&gt;Code Smell:&lt;br&gt;
𝗣𝗿𝗲𝗳𝗲𝗿 𝗔𝗻𝘆() 𝗼𝘃𝗲𝗿 𝗖𝗼𝘂𝗻𝘁()&lt;/p&gt;

&lt;p&gt;✅ El método 𝗖𝗼𝘂𝗻𝘁() se utiliza para obtener el número total de elementos de una colección que satisfacen una condición determinada. Devuelve un valor entero que representa el recuento de elementos coincidentes.&lt;/p&gt;

&lt;p&gt;✅ El método 𝗔𝗻𝘆() se utiliza para determinar rápidamente si una colección contiene algún elemento que cumpla una condición determinada. Devuelve un valor booleano (verdadero si algún elemento coincide con la condición; en caso contrario, falso).&lt;/p&gt;

&lt;p&gt;🚀 Usar 𝗔𝗻𝘆() sobre 𝗖𝗼𝘂𝗻𝘁() puede ser más eficiente cuando solo está interesado en determinar si existe algún elemento que coincida con una condición en la colección. Esto se debe a que Any() deja de recorrer la colección tan pronto como encuentra el primer elemento coincidente, mientras que Count() recorre toda la colección para contar todos los elementos coincidentes. En los casos en que la colección es grande, Any() puede proporcionar potencialmente un mejor rendimiento.&lt;/p&gt;

&lt;p&gt;🔥 Utilice 𝗔𝗻𝘆() sobre 𝗖𝗼𝘂𝗻𝘁() cuando solo le importe si hay elementos en una colección, no el número exacto de elementos. También debes usar Any() cuando la colección sea grande o evaluada de forma diferida. Y deberías usar Any() cuando quieras mejorar la legibilidad de tu código.&lt;/p&gt;

&lt;p&gt;Ejemplo en Codigo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrgknoa6r33nsj14awe8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrgknoa6r33nsj14awe8.png" alt="Image description" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codesmell</category>
      <category>csharp</category>
      <category>backend</category>
      <category>performance</category>
    </item>
    <item>
      <title>Consejos diario para C#</title>
      <dc:creator>antonio.nicasio.herrera@gmail.com</dc:creator>
      <pubDate>Mon, 22 Jan 2024 22:52:44 +0000</pubDate>
      <link>https://dev.to/xocedev/consejos-diario-para-c-5hb4</link>
      <guid>https://dev.to/xocedev/consejos-diario-para-c-5hb4</guid>
      <description>&lt;p&gt;Hola buen dia devs aqui te dejo un consejo diario si trabajas con C# &lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Patron Relacional
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;su pongamos que tenemos el siguiente codigo y queremos refactorizar y hacerlo mas entendible o legible.&lt;/p&gt;

&lt;p&gt;en el siguiente codigo evaluaremos si un alumno paso el examen donde la calificacion minima es 70 puntos&lt;/p&gt;

&lt;p&gt;💡𝗖#𝗧𝗶𝗽&lt;/p&gt;

&lt;p&gt;✅ 𝗥𝗲𝗹𝗮𝘁𝗶𝗼𝗻𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 𝗠𝗮𝘁𝗰𝗵𝗶𝗻𝗴 es una característica introducida en 𝗖# 𝟵 que mejora las capacidades de coincidencia de patrones del lenguaje. La coincidencia de patrones es una forma de comparar valores con patrones.&lt;/p&gt;

&lt;p&gt;✅ Es una técnica de programación 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝗮𝗹, lo que significa que se centra en la evaluación de expresiones en lugar del flujo de control de su código.&lt;/p&gt;

&lt;p&gt;🔥 𝗔𝗱𝘃𝗮𝗻𝘁𝗮𝗴𝗲𝘀 𝗼𝗳 𝗿𝗲𝗹𝗮𝘁𝗶𝗼𝗻𝗮𝗹 𝗽𝗮𝘁𝘁𝗲𝗿 𝗻𝘀 𝗺𝗮𝘁𝗰𝗵𝗶𝗻𝗴:&lt;br&gt;
◾ 𝗖𝗼𝗻𝗰𝗶𝘀𝗲𝗻𝗲𝘀𝘀: la coincidencia de patrones relacionales se puede utilizar para crear código más conciso y legible.&lt;br&gt;
◾ 𝗘𝘅𝗽𝗿𝗲𝘀𝘀𝗶𝘃𝗲𝗻𝗲𝘀𝘀: La coincidencia de patrones relacionales se puede utilizar para expresar condiciones más complejas.&lt;/p&gt;

&lt;p&gt;💡 𝗥𝗲𝗹𝗮𝘁𝗶𝗼𝗻𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 𝗠𝗮𝘁𝗰𝗵𝗶𝗻𝗴 no siempre es la mejor solución. A veces, es más sencillo y eficaz utilizar la forma tradicional de comprobar si una expresión coincide con una determinada condición.&lt;/p&gt;

&lt;p&gt;Ejemplo en Codigo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyw79vysmto6ik8c73ck5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyw79vysmto6ik8c73ck5.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>tips</category>
      <category>backend</category>
      <category>net</category>
    </item>
    <item>
      <title>Configurar Jest en tus pruebas técnicas Javascript.</title>
      <dc:creator>antonio.nicasio.herrera@gmail.com</dc:creator>
      <pubDate>Thu, 04 Nov 2021 15:47:34 +0000</pubDate>
      <link>https://dev.to/xocedev/configurar-jest-en-tus-pruebas-tecnicas-javascript-17nj</link>
      <guid>https://dev.to/xocedev/configurar-jest-en-tus-pruebas-tecnicas-javascript-17nj</guid>
      <description>&lt;p&gt;Hola chicos en esta ocasión aprenderemos a configurar nuestro proyecto o pruebas técnicas. cuando nos envían alguna tarea para una posición como programador o Ingeniero frontend.&lt;/p&gt;

&lt;p&gt;lo primero que comenzaremos sera con crear un nuevo proyecto en el cual simularemos que es nuestro proyecto o prueba técnica en el caso que nos manden algún challenge técnico. Nota: no todas las empresas hacen este tipo de challenges como una tarea que es parte del proceso pero una que otra empresa si te da la oportunidad de enviarte tarea y darte un tiempo limite para resolverlo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 1
&lt;/h3&gt;

&lt;p&gt;Crear nuestro directorio de trabajo&lt;/p&gt;

&lt;p&gt;abriremos nuestra consola y escribiremos el siguiente comando&lt;/p&gt;

&lt;p&gt;Linux Distro o OSX&lt;br&gt;
&lt;code&gt;mkdir prueba_tecnica&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Windows seria&lt;br&gt;
&lt;code&gt;MD prueba_tecnica&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;con esto crearemos nuestro directorio de trabajo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 2
&lt;/h3&gt;

&lt;p&gt;una vez creado el directorio nos movemos a el &lt;code&gt;cd prueba_tecnica&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;dentro nuestro directorio abrimos nuestro editor de código preferido.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 3
&lt;/h3&gt;

&lt;p&gt;en nuestra consola corremos el siguiente comando &lt;code&gt;npm init&lt;/code&gt; nos pedirá llenar una serie de campos... si no queremos llenarlos solo oprime enter hasta que termine de solicitarlos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 4
&lt;/h3&gt;

&lt;p&gt;Instalamos Jest dentro de nuestro proyecto con cualquiera de estos dos gestor de paquetes ya sea Yarn o NPM &lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn add --dev jest&lt;/code&gt; o &lt;code&gt;npm install --save-dev jest&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 5
&lt;/h3&gt;

&lt;p&gt;dentro nuestro &lt;code&gt;package.json&lt;/code&gt; debemos añadir el script para correr nuestras pruebas el cual debéria quedar de la siguiente manera&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
  "scripts": {&lt;br&gt;
    "test": "jest"&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
de igual manera te dejo la guía de la documentación oficial de Jest&lt;br&gt;
&lt;a href="https://jestjs.io/docs/getting-started"&gt;Documentación Oficial de Jest&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 6
&lt;/h3&gt;

&lt;p&gt;una vez configurado Jest en nuestro Proyecto procedemos a crear nuestro código o programa al cual le añadiremos pruebas unitarias.&lt;/p&gt;

&lt;p&gt;dentro de nuestro editor crearemos nuestro archivo de trabajo puedes nombrarlo como tu desees en mi caso como verificaremos si una cadena de texto es un palíndromo sencillo verdad?.&lt;/p&gt;

&lt;p&gt;en mi caso mi archivo se llamara: &lt;br&gt;
&lt;code&gt;isPalindrome.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;este problema se puede resolver de muchas maneras o tener distintos aproachs pero en esta ocasión lo resolví de la siguiente manera.&lt;/p&gt;

&lt;p&gt;y el código es el siguiente &lt;/p&gt;

&lt;p&gt;*`&lt;br&gt;
var isPalindrome = function(str) {&lt;br&gt;
   const reversedString = str.split('').reverse().join('')&lt;br&gt;
   return str === reversedString&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;module.exports = isPalindrome&lt;br&gt;
`*&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 7
&lt;/h3&gt;

&lt;p&gt;procedemos a testear nuestra solución del código anterior&lt;/p&gt;

&lt;p&gt;creamos dentro de nuestro proyecto el siguiente archivo&lt;br&gt;
el nombre puede ser lo que tu desees solo por consistencia lo nombro similar añadiendo la palabra .test antes del nombre de la extension. esto es muy importante para que Jest detecte tus archivos o módulos de pruebas. es importante que dependiendo de la complejidad o arquitectura del proyecto vayas creando la arquitectura adecuada para tus pruebas. en esta ocasión solo es una prueba sencilla pero toma en cuenta que si tu proyecto es de magnitud media o amplia puedas módularizar tus pruebas de manera ordenada.&lt;/p&gt;

&lt;p&gt;Creamos nuestro archivo de pruebas.&lt;br&gt;
&lt;code&gt;isPalindrom.test.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;nuestro archivo de pruebas quedaría de la siguiente manera.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const palindrome = require('./isPlindrome')&lt;br&gt;
 test('string is a palindrome', () =&amp;gt;{&lt;br&gt;
 expect(palindrome('bib')).toBeTruty()&lt;br&gt;
 expect(palindrome('nun')).toBeTruty()&lt;br&gt;
 expect(palindrome('madam')).toBeTruty()&lt;br&gt;
 expect(palindrome('racecar')).toBeTruty()&lt;br&gt;
 expect(palindrome('civic')).toBeTruty()&lt;br&gt;
 expect(palindrome('ramon')).toBeFalsy()&lt;br&gt;
})&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
tu puedes añadir tantos casos de uso o pruebas como lo desees en mi caso. solo añadi que puedas saber si la cadena de texto es un palíndromo que es nuestro base case.&lt;/p&gt;

&lt;p&gt;una vez terminado nuestro archivo de prueba procederemos a correr nuestras pruebas con el siguiente de los dos comandos en nuestra terminal&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm test&lt;/code&gt; o &lt;code&gt;yarn test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;automáticamente se ejecutaran las prueba y podremos ver el resultado de las mismas.&lt;/p&gt;

&lt;p&gt;esto seria todo por el articulo sobre la integración de Jest en nuestros challenge técnicos si tenemos la oportunidad esto nos dará mayor peso dentro un proceso de selección sobre otros candidatos. sencillo verdad? cabe recalcar que tu puedes crear tus pruebas técnicas tan complejas como las necesites.&lt;/p&gt;

&lt;p&gt;te dejo un video explicativo de como lo hice dentro de mi canal de Youtube.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Gp66zyNuMOc"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jest</category>
      <category>javascript</category>
      <category>testing</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
