Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
S
software-development-docs
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • pem
  • software-development-docs
  • Merge Requests
  • !7

Merged
Opened Aug 25, 2025 by Miguel Mejía@magomez 
  • Report abuse
Report abuse

Crear documentación de reglas para proyectos en React

🛠️ Changes

Este MR introduce la nueva guía de desarrollo Frontend para establecer un conjunto de buenas prácticas, estándares y convenciones para TS y React. La guía ha sido estructurada de forma modular para facilitar su lectura, mantenimiento y futuras actualizaciones.

📝 Associated issues

resolves LIB-255

🤔 Considerations

Aunque hay normas para TS planito, queda pendiente ahondar en TS solo y la creación de normas para el CSS, que pos son otras tareas

Edited Aug 25, 2025 by Miguel Mejía
  • Discussion 20
  • Commits 7
  • Changes 7
{{ resolvedDiscussionCount }}/{{ discussionCount }} {{ resolvedCountText }} resolved
  • Miguel Mejía @magomez

    assigned to @esuarez

    Aug 25, 2025

    assigned to @esuarez

    assigned to @esuarez
    Toggle commit list
  • Miguel Mejía @magomez

    assigned to @mgalvez

    Aug 25, 2025

    assigned to @mgalvez

    assigned to @mgalvez
    Toggle commit list
  • Miguel Mejía @magomez

    removed assignee

    Aug 25, 2025

    removed assignee

    removed assignee
    Toggle commit list
  • Miguel Mejía @magomez

    changed the description

    Aug 25, 2025

    changed the description

    changed the description
    Toggle commit list
  • Miguel Mejía @magomez

    changed the description

    Aug 25, 2025

    changed the description

    changed the description
    Toggle commit list
  • Miguel Mejía @magomez

    added 1 commit

    • 7df66e8d - Fix two examples

    Compare with previous version

    Aug 28, 2025

    added 1 commit

    • 7df66e8d - Fix two examples

    Compare with previous version

    added 1 commit * 7df66e8d - Fix two examples [Compare with previous version](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=314&start_sha=07f54d8fbd524ffabe831b63ccac3a214f65d794)
    Toggle commit list
  • César Galvis
    @cgalvis started a discussion on an old version of the diff Aug 28, 2025
    Resolved by Miguel Mejía Aug 28, 2025
    docs/development-rules/sections/front/5-buenas-practicas-en-react.md 0 → 100644
    1 # 5. Buenas Prácticas en React
    2
    3 ## Componentes de Función: La preferencia del equipo
    4
    5 No hay razón para seguir escribiendo componentes de clase, son una tecnología vieja que se evitamos en nuestras aplicaciones. Los componentes de función, junto con los _Hooks_, ofrecen una forma más simple y directa de manejar el estado, la sincronización y los efectos secundarios, lo que resulta en un código más limpio y fácil de depurar.
    • César Galvis @cgalvis commented Aug 28, 2025
      Master

      Porfa, cambiar son una tecnología vieja que se evitamos por son una tecnología vieja que evitamos

      Porfa, cambiar `son una tecnología vieja que se evitamos` por `son una tecnología vieja que evitamos`
    • Miguel Mejía @magomez

      changed this line in version 3 of the diff

      Aug 28, 2025

      changed this line in version 3 of the diff

      changed this line in [version 3 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=315&start_sha=7df66e8d2752b85ef9a23e5febff34dc814d80e9#c601f0869e8a397ffaaa06df334db2207906725c_5_5)
      Toggle commit list
    Please register or sign in to reply
  • César Galvis
    @cgalvis started a discussion on an old version of the diff Aug 28, 2025
    Resolved by Miguel Mejía Aug 28, 2025
    docs/development-rules/sections/front/5-buenas-practicas-en-react.md 0 → 100644
    1 # 5. Buenas Prácticas en React
    2
    3 ## Componentes de Función: La preferencia del equipo
    4
    5 No hay razón para seguir escribiendo componentes de clase, son una tecnología vieja que se evitamos en nuestras aplicaciones. Los componentes de función, junto con los _Hooks_, ofrecen una forma más simple y directa de manejar el estado, la sincronización y los efectos secundarios, lo que resulta en un código más limpio y fácil de depurar.
    6
    7 ## Estructura y Organización
    8
    9 Los componentes deben tener una única responsabilidad. Los que orquestan, renderizan y hacen malabares al mismo tiempo, fácilmente se convierten en un nido de _bugs_, que fácilmente crean condiciones de carrera o bucles de renderizado.
    10
    11 la estructura de los componentes en el archivodebe ser la siguiente:
    • César Galvis @cgalvis commented Aug 28, 2025
      Master

      Porfa cambiar la estructura de los componentes en el archivodebe ser la siguiente: por La estructura de los componentes en el archivo debe ser la siguiente:

      Porfa cambiar `la estructura de los componentes en el archivodebe ser la siguiente:` por `La estructura de los componentes en el archivo debe ser la siguiente:`
    • Miguel Mejía @magomez

      changed this line in version 3 of the diff

      Aug 28, 2025

      changed this line in version 3 of the diff

      changed this line in [version 3 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=315&start_sha=7df66e8d2752b85ef9a23e5febff34dc814d80e9#c601f0869e8a397ffaaa06df334db2207906725c_11_11)
      Toggle commit list
    Please register or sign in to reply
  • César Galvis
    @cgalvis started a discussion on an old version of the diff Aug 28, 2025
    Resolved by Miguel Mejía Aug 28, 2025
    docs/development-rules/sections/front/5-buenas-practicas-en-react.md 0 → 100644
    121
    122 Para mantener el código claro, un handler debe tener una sola responsabilidad, como hacer una petición a la API o actualizar un estado. Siempre los nombramos con el prefijo handle (ej., handleClick, handleSubmit). Si un handler depende del estado o de las props, lo definimos dentro del componente; si no, lo movemos fuera del componente para que sea más fácil de reutilizar y probar, si solo es usado en este componente, puede dejarse en el mismo archivo, de lo contrario, debe moverse al lugar que la arquitectura de la función haya designado para los helpers y utils.
    123
    124 ## Seguridad y Buenas Prácticas
    125
    126 - **Sanitización de datos**: Asegúrate de que los datos externos se limpien antes de ser renderizados en JSX para prevenir ataques de _cross-site scripting_.
    127
    128 - **Manejo seguro de dependencias del package.json**: La gestión de dependencias es un proceso delicado. Las actualizaciones automáticas solo deben aplicarse para _hotfixes_ y parches menores. Las actualizaciones de versión y los cambios importantes deben hacerse bajo supervisión al menos una vez al año.
    129
    130 - **¡No uses `dangerouslySetInnerHTML`!**: Esta propiedad es peligrosa y debe evitarse. Si es absolutamente necesario, su uso debe estar justificado y el contenido debe ser sanitizado de antemano.
    131
    132 ## Manejo de errores
    133
    134 ### Manejo de Errores Asíncronos
    135
    136 Cada llamada a una API o operación async debe estar envuelta en un bloque try-catch o un chaininng `.then().catch()` apropiado, y los errores deben ser manejados de manera uniforme en toda la aplicación.
    • César Galvis @cgalvis commented Aug 28, 2025
      Master

      Porfa cambiar Cada llamada a una API o operación por Cada llamada a una API u operación

      Porfa cambiar `Cada llamada a una API o operación` por `Cada llamada a una API u operación`
    • Miguel Mejía @magomez

      changed this line in version 3 of the diff

      Aug 28, 2025

      changed this line in version 3 of the diff

      changed this line in [version 3 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=315&start_sha=7df66e8d2752b85ef9a23e5febff34dc814d80e9#c601f0869e8a397ffaaa06df334db2207906725c_136_136)
      Toggle commit list
    Please register or sign in to reply
  • Miguel Mejía @magomez

    added 1 commit

    • cbac600d - Fix typos

    Compare with previous version

    Aug 28, 2025

    added 1 commit

    • cbac600d - Fix typos

    Compare with previous version

    added 1 commit * cbac600d - Fix typos [Compare with previous version](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=315&start_sha=7df66e8d2752b85ef9a23e5febff34dc814d80e9)
    Toggle commit list
  • Miguel Mejía @magomez

    resolved all discussions

    Aug 28, 2025

    resolved all discussions

    resolved all discussions
    Toggle commit list
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/frontend-structure.md 0 → 100644
    1 # Guía de estilo para desarrollo en React con TS
    2
    3 ## TL;DR
    4
    5 Instala ESLint y Prettier, utiliza las reglas de lint suministradas y el default de Prettier.
    6
    7 Escribe código para humanos. La legibilidad y sostenibilidad son más importantes que la concisión pues el objetivo es que cualquier persona pueda entender el código rápidamente.
    8
    9 Gestiona las dependencias de forma responsable y prioriza la accesibilidad partiendo de estructurar un HTML semántico. En TypeScript no des lugar a `any`; preferiere `unknown` y la validación de tipos. En React, escribe componentes de Función con una sola responsabilidad y escribe el JSX libre de lógica compleja...
    10
    11 Maneja los errores de forma explícita para ofrecer una buena experiencia de desarrollo tus compañeros y una de usuario más robusta.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      te comiste un a: desarrollo tus compañeros

      te comiste un `a`: `desarrollo tus compañeros`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#4216b9edde9f334c054c8e51db1de1f1d8924c3d_11_11)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/frontend-structure.md 0 → 100644
    21 - [Una línea, una acción](./front/3-convenciones-generales.md#una-línea-una-acción)
    22 - [Nomenclatura](./front/3-convenciones-generales.md#nomenclatura)
    23 - [Bibliotecas Externas](./front/3-convenciones-generales.md#bibliotecas-externas)
    24 - [Accesibilidad](./front/3-convenciones-generales.md#accesibilidad)
    25 - [El texto de la interfaz de usuario](./front/3-convenciones-generales.md#el-texto-de-la-interfaz-de-usuario)
    26 - [Comentarios solo cuando el código no lo explica todo](./front/3-convenciones-generales.md#comentarios-solo-cuando-el-código-no-lo-explica-todo)
    27 - [Aduana: Importaciones y exportaciones](./front/3-convenciones-generales.md#aduana-importaciones-y-exportaciones)
    28 4. [Buenas Prácticas en TypeScript](./front/4-buenas-practicas-en-typescript.md)
    29 - [Explicar lo suficiente](./front/4-buenas-practicas-en-typescript.md#explicar-lo-suficiente)
    30 - [Interfaces y Tipos: ¿Cuál y cuándo?](./front/4-buenas-practicas-en-typescript.md#interfaces-y-tipos-cuál-y-cuándo)
    31 - [Arrays y Genéricos](./front/4-buenas-practicas-en-typescript.md#arrays-y-genéricos)
    32 - [Archivos de definición de tipos](./front/4-buenas-practicas-en-typescript.md#archivos-de-definición-de-tipos)
    33 - [Vamo' a calmarno'](./front/4-buenas-practicas-en-typescript.md#vamo-a-calmarno)
    34 - [Constantes con enums y posibilidades con literales](./front/4-buenas-practicas-en-typescript.md#constantes-con-enums-y-posibilidades-con-literales)
    35 - [`any`, `unknown` y `never`](./front/4-buenas-practicas-en-typescript.md#any-unknown-y-never)
    36 - [Helpers y Tipos Utilitarios](./front/4-buenas-practicas-en-typescript.md#helpers-y-tipos-utilitarios)
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      utilitarios aquí no debería arrancar con mayúscula (ya que estamos de gramarnazis xD)

      utilitarios aquí no debería arrancar con mayúscula (ya que estamos de gramarnazis xD)
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#4216b9edde9f334c054c8e51db1de1f1d8924c3d_36_36)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/frontend-structure.md 0 → 100644
    23 - [Bibliotecas Externas](./front/3-convenciones-generales.md#bibliotecas-externas)
    24 - [Accesibilidad](./front/3-convenciones-generales.md#accesibilidad)
    25 - [El texto de la interfaz de usuario](./front/3-convenciones-generales.md#el-texto-de-la-interfaz-de-usuario)
    26 - [Comentarios solo cuando el código no lo explica todo](./front/3-convenciones-generales.md#comentarios-solo-cuando-el-código-no-lo-explica-todo)
    27 - [Aduana: Importaciones y exportaciones](./front/3-convenciones-generales.md#aduana-importaciones-y-exportaciones)
    28 4. [Buenas Prácticas en TypeScript](./front/4-buenas-practicas-en-typescript.md)
    29 - [Explicar lo suficiente](./front/4-buenas-practicas-en-typescript.md#explicar-lo-suficiente)
    30 - [Interfaces y Tipos: ¿Cuál y cuándo?](./front/4-buenas-practicas-en-typescript.md#interfaces-y-tipos-cuál-y-cuándo)
    31 - [Arrays y Genéricos](./front/4-buenas-practicas-en-typescript.md#arrays-y-genéricos)
    32 - [Archivos de definición de tipos](./front/4-buenas-practicas-en-typescript.md#archivos-de-definición-de-tipos)
    33 - [Vamo' a calmarno'](./front/4-buenas-practicas-en-typescript.md#vamo-a-calmarno)
    34 - [Constantes con enums y posibilidades con literales](./front/4-buenas-practicas-en-typescript.md#constantes-con-enums-y-posibilidades-con-literales)
    35 - [`any`, `unknown` y `never`](./front/4-buenas-practicas-en-typescript.md#any-unknown-y-never)
    36 - [Helpers y Tipos Utilitarios](./front/4-buenas-practicas-en-typescript.md#helpers-y-tipos-utilitarios)
    37 5. [Buenas Prácticas en React](./front/5-buenas-practicas-en-react.md)
    38 - [Componentes de Función: La preferencia del equipo](./front/5-buenas-practicas-en-react.md#componentes-de-función-la-preferencia-del-equipo)
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      lo mismo para función

      lo mismo para función
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#4216b9edde9f334c054c8e51db1de1f1d8924c3d_38_38)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/frontend-structure.md 0 → 100644
    26 - [Comentarios solo cuando el código no lo explica todo](./front/3-convenciones-generales.md#comentarios-solo-cuando-el-código-no-lo-explica-todo)
    27 - [Aduana: Importaciones y exportaciones](./front/3-convenciones-generales.md#aduana-importaciones-y-exportaciones)
    28 4. [Buenas Prácticas en TypeScript](./front/4-buenas-practicas-en-typescript.md)
    29 - [Explicar lo suficiente](./front/4-buenas-practicas-en-typescript.md#explicar-lo-suficiente)
    30 - [Interfaces y Tipos: ¿Cuál y cuándo?](./front/4-buenas-practicas-en-typescript.md#interfaces-y-tipos-cuál-y-cuándo)
    31 - [Arrays y Genéricos](./front/4-buenas-practicas-en-typescript.md#arrays-y-genéricos)
    32 - [Archivos de definición de tipos](./front/4-buenas-practicas-en-typescript.md#archivos-de-definición-de-tipos)
    33 - [Vamo' a calmarno'](./front/4-buenas-practicas-en-typescript.md#vamo-a-calmarno)
    34 - [Constantes con enums y posibilidades con literales](./front/4-buenas-practicas-en-typescript.md#constantes-con-enums-y-posibilidades-con-literales)
    35 - [`any`, `unknown` y `never`](./front/4-buenas-practicas-en-typescript.md#any-unknown-y-never)
    36 - [Helpers y Tipos Utilitarios](./front/4-buenas-practicas-en-typescript.md#helpers-y-tipos-utilitarios)
    37 5. [Buenas Prácticas en React](./front/5-buenas-practicas-en-react.md)
    38 - [Componentes de Función: La preferencia del equipo](./front/5-buenas-practicas-en-react.md#componentes-de-función-la-preferencia-del-equipo)
    39 - [Estructura y Organización](./front/5-buenas-practicas-en-react.md#estructura-y-organización)
    40 - [Props: Cómo pasar y gestionar propiedades](./front/5-buenas-practicas-en-react.md#props-cómo-pasar-y-gestionar-propiedades)
    41 - [Manejo de Estados: Estrategias claras](./front/5-buenas-practicas-en-react.md#manejo-de-estados-estrategias-claras)
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      y lo mismo para estados

      Edited Sep 08, 2025
      y lo mismo para estados
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#4216b9edde9f334c054c8e51db1de1f1d8924c3d_41_41)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/frontend-structure.md 0 → 100644
    32 - [Archivos de definición de tipos](./front/4-buenas-practicas-en-typescript.md#archivos-de-definición-de-tipos)
    33 - [Vamo' a calmarno'](./front/4-buenas-practicas-en-typescript.md#vamo-a-calmarno)
    34 - [Constantes con enums y posibilidades con literales](./front/4-buenas-practicas-en-typescript.md#constantes-con-enums-y-posibilidades-con-literales)
    35 - [`any`, `unknown` y `never`](./front/4-buenas-practicas-en-typescript.md#any-unknown-y-never)
    36 - [Helpers y Tipos Utilitarios](./front/4-buenas-practicas-en-typescript.md#helpers-y-tipos-utilitarios)
    37 5. [Buenas Prácticas en React](./front/5-buenas-practicas-en-react.md)
    38 - [Componentes de Función: La preferencia del equipo](./front/5-buenas-practicas-en-react.md#componentes-de-función-la-preferencia-del-equipo)
    39 - [Estructura y Organización](./front/5-buenas-practicas-en-react.md#estructura-y-organización)
    40 - [Props: Cómo pasar y gestionar propiedades](./front/5-buenas-practicas-en-react.md#props-cómo-pasar-y-gestionar-propiedades)
    41 - [Manejo de Estados: Estrategias claras](./front/5-buenas-practicas-en-react.md#manejo-de-estados-estrategias-claras)
    42 - [Sincronización (`useEffect`)](./front/5-buenas-practicas-en-react.md#sincronización-useeffect)
    43 - [useMemo y useCallback](./front/5-buenas-practicas-en-react.md#usememo-y-usecallback)
    44 - [Código ordenado](./front/5-buenas-practicas-en-react.md#código-ordenado)
    45 - [Fragmentos y Portales](./front/5-buenas-practicas-en-react.md#fragmentos-y-portales)
    46 - [Handlers (Funciones para manejar eventos de usuario)](./front/5-buenas-practicas-en-react.md#handlers-funciones-para-manejar-eventos-de-usuario)
    47 - [Seguridad y Buenas Prácticas](./front/5-buenas-practicas-en-react.md#seguridad-y-buenas-prácticas)
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      y para prácticas :P

      Edited Sep 08, 2025
      y para prácticas :P
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#4216b9edde9f334c054c8e51db1de1f1d8924c3d_47_47)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/2-configuracion-del-entorno.md 0 → 100644
    9 Puedes integrarlo en tu editor con los plugins oficiales. Si no, de seguro habremos dispuesto de un script dentro del package.json para darle formato al código: usualmente `<npm/pnpm/yarn/administrador de paquetes> format` harán ese trabajo.
    10
    11 ### La seguridad antes que la policía
    12
    13 Prettier es nuestra brújula de estilo y ESLint es quien evita que la caguemos antes de tiempo con pendejadas. Su propósito es detectar problemas de calidad, consistencia y posibles errores antes de que lleguen al código. Nuestra configuración combina las recomendaciones estándar de Airbnb, las de react y la ultima palabra la da prettier para evitar conflictos en las reglas...
    14
    15 ```typescript
    16 extends: [
    17 "airbnb",
    18 "airbnb-typescript",
    19 "plugin:react-hooks/recommended",
    20 "plugin:prettier/recommended",
    21 ],
    22 ```
    23
    24 Pero en esta área nuestro equipo si tiene opiniones y acuerdos que modifican las reglas base y responden a el cómo vemos el código y las experiencias que hemos tenido.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      cambiar "responden a el cómo" por "responden a cómo"

      Edited Sep 08, 2025 by Erika Suarez
      cambiar "responden a el cómo" por "responden a cómo"
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#3e63dc7c402278b198947a326d3ccdb41fd12cb3_24_24)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/3-convenciones-generales.md 0 → 100644
    1 # 3. Convenciones Generales
    2
    3 ## Orden del código
    4
    5 **Módulos**: Siempre trabajaremos con el sistema de Módulos de ECMAScript (ESM) en nuestro código. Aunque aún existen bibliotecas en CommonJS (CJS), podemos usarlas como módulos e importarlas sin usar la sintaxis de `require`.
    6
    7 **Evitar el entorno global**: Usemos las capacidades de los módulos para mantener nuestro entorno global limpio. No hay necesidad de declarar variables globales que ensucien todo y generar conflictos.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      Sugerencia de cambio de redacción: variables globales que ensucian todo y crean potenciales conflictos.

      Edited Sep 08, 2025
      Sugerencia de cambio de redacción: `variables globales que ensucian todo y crean potenciales conflictos.`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c415d713a828f8048b28966818d462ef37db8b2a_7_7)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/3-convenciones-generales.md 0 → 100644
    8
    9 **Clases con propósito**: No creemos clases solo para encapsular un conjunto de variables y funciones, eso lo puede hacer mejor un módulo. Las clases deben cumplir un propósito de arquitectura, como implementar un patrón de diseño (di tu un _singleton_) o manejar un estado interno complejo y persistente.
    10
    11 ## Una línea, una acción
    12
    13 Buscamos que cada línea de código tenga un propósito único y fácil de entender. Cuando una sola línea hace demasiadas cosas, se vuelve difícil de leer y peor de depurar. Por eso, preferimos la claridad sobre la concisión.
    14
    15 Esto explica porqué evitamos los ternarios anidados y usamos llaves en todos nuestros bloques de control (incluso en los `if` de una sola línea), lo que hace que el código sea predecible y reduce la posibilidad de errores a largo plazo.
    16
    17 ## Nomenclatura
    18
    19 Una de las cosas más difíciles en la programación es asignar buenos nombres de forma consistente. La razón es simple: un buen nombre reduce la necesidad de explicaciones. Buscamos nombres que le digan a cualquiera lo que están viendo sin necesidad de comentarios.
    20
    21 - **Idioma**: Dado que los lenguajes de programación que usamos están en inglés, hemos acordado usar este idioma en nuestro código. Respetamos y nos gusta el idioma en el que hablamos pero el código en "espanglish" puede ser muy molesto y aumentar la carga cognitiva.
    22
    23 - **Variables y funciones**: Usamos **`camelCase`**. Los nombres de variables deben ser sustantivos que describan su contenido (ej., `userId`, `userName`), y los de las funciones, verbos que indiquen lo que hacen (ej., `fetchUsers`, `calculateTotal`, `getSomeShit`)... tener cuidado con palabras genéricas como `info` o `data` y de cuando sea posible optar por algo más descriptivo de la información que contienen.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      quitar el de al final y de cuando sea posible...

      Edited Sep 08, 2025
      quitar el `de` al final `y de cuando sea posible...`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c415d713a828f8048b28966818d462ef37db8b2a_23_23)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/3-convenciones-generales.md 0 → 100644
    12
    13 Buscamos que cada línea de código tenga un propósito único y fácil de entender. Cuando una sola línea hace demasiadas cosas, se vuelve difícil de leer y peor de depurar. Por eso, preferimos la claridad sobre la concisión.
    14
    15 Esto explica porqué evitamos los ternarios anidados y usamos llaves en todos nuestros bloques de control (incluso en los `if` de una sola línea), lo que hace que el código sea predecible y reduce la posibilidad de errores a largo plazo.
    16
    17 ## Nomenclatura
    18
    19 Una de las cosas más difíciles en la programación es asignar buenos nombres de forma consistente. La razón es simple: un buen nombre reduce la necesidad de explicaciones. Buscamos nombres que le digan a cualquiera lo que están viendo sin necesidad de comentarios.
    20
    21 - **Idioma**: Dado que los lenguajes de programación que usamos están en inglés, hemos acordado usar este idioma en nuestro código. Respetamos y nos gusta el idioma en el que hablamos pero el código en "espanglish" puede ser muy molesto y aumentar la carga cognitiva.
    22
    23 - **Variables y funciones**: Usamos **`camelCase`**. Los nombres de variables deben ser sustantivos que describan su contenido (ej., `userId`, `userName`), y los de las funciones, verbos que indiquen lo que hacen (ej., `fetchUsers`, `calculateTotal`, `getSomeShit`)... tener cuidado con palabras genéricas como `info` o `data` y de cuando sea posible optar por algo más descriptivo de la información que contienen.
    24
    25 - **Tipos, clases y componentes**: Usamos **`PascalCase`**. Esto ayuda a diferenciarlos del resto del código (ej., `UserType`, `ProductCard`).
    26
    27 - **Constantes de configuración**: Usamos **`SCREAMING_SNAKE_CASE`**. Son constantes que se usan para una configurar un comportamiento del código, su nombre en mayúsculas debe dejar muy claro la info que contienen (ej., `API_URL`, `MAX_RETRIES`, `I_AM_A_MAGIC_NUMBER`).
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      typo: para una configurar

      Edited Sep 08, 2025
      typo: `para una configurar`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c415d713a828f8048b28966818d462ef37db8b2a_27_27)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/3-convenciones-generales.md 0 → 100644
    18
    19 Una de las cosas más difíciles en la programación es asignar buenos nombres de forma consistente. La razón es simple: un buen nombre reduce la necesidad de explicaciones. Buscamos nombres que le digan a cualquiera lo que están viendo sin necesidad de comentarios.
    20
    21 - **Idioma**: Dado que los lenguajes de programación que usamos están en inglés, hemos acordado usar este idioma en nuestro código. Respetamos y nos gusta el idioma en el que hablamos pero el código en "espanglish" puede ser muy molesto y aumentar la carga cognitiva.
    22
    23 - **Variables y funciones**: Usamos **`camelCase`**. Los nombres de variables deben ser sustantivos que describan su contenido (ej., `userId`, `userName`), y los de las funciones, verbos que indiquen lo que hacen (ej., `fetchUsers`, `calculateTotal`, `getSomeShit`)... tener cuidado con palabras genéricas como `info` o `data` y de cuando sea posible optar por algo más descriptivo de la información que contienen.
    24
    25 - **Tipos, clases y componentes**: Usamos **`PascalCase`**. Esto ayuda a diferenciarlos del resto del código (ej., `UserType`, `ProductCard`).
    26
    27 - **Constantes de configuración**: Usamos **`SCREAMING_SNAKE_CASE`**. Son constantes que se usan para una configurar un comportamiento del código, su nombre en mayúsculas debe dejar muy claro la info que contienen (ej., `API_URL`, `MAX_RETRIES`, `I_AM_A_MAGIC_NUMBER`).
    28
    29 ## Bibliotecas Externas
    30
    31 Importar debe suceder solo cuando algo es realmente necesario. Evitamos importar por importar y nos aseguramos de que las bibliotecas que usamos estén bien mantenidas y sean de alta calidad.
    32
    33 Un ejemplo de lo que puede salir mal es el caso de **`left-pad`**. Una biblioteca con una función simple (no más de cinco líneas de código y bastante innecesaria si se conocen los métodos para `String`), que, al ser eliminada de NPM(Luego de eso se reforzó la política de no borrado de NPM), causó que miles de proyectos dejaran de compilar. [El chisme completo](https://en.wikipedia.org/wiki/Npm_left-pad_incident).
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      agregar espacio después de NPM

      Edited Sep 08, 2025
      agregar espacio después de `NPM`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c415d713a828f8048b28966818d462ef37db8b2a_33_33)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/3-convenciones-generales.md 0 → 100644
    35 **Cada dependencia es una responsabilidad.**
    36
    37 Por lo tanto:
    38
    39 - Solo importamos cuando la lógica del proyecto no depende de la importación.
    40 - Solo importamos si hemos confirmado que no hay una forma directa o clara de realizar lo que necesitamos con nuestro propio código dentro del tiempo que disponemos.
    41 - Solo importamos bibliotecas que tengan soporte activo (al menos un año).
    42 - Solo importamos bibliotecas con tipado en TypeScript nativo para integrarlas mejor.
    43
    44 ## Accesibilidad
    45
    46 Construir una interfaz de usuario no es solo cuestión de estética. La accesibilidad es fundamental para que nuestras aplicaciones puedan ser usadas por cualquier persona, considerando sus capacidades físicas, cognitivas, sociales, contextuales y tecnológicas.
    47
    48 **HTML Semántico**: Usa las etiquetas correctas (`<button>`, `<nav>`, `<article>`, ... ) en lugar de `<div>` como mantequilla en restaurante francés. El HTML semántico es clave para construir aplicaciones web accesibles desde el inicio, ayudando a los lectores de pantalla a entender la estructura de la página, facilitando la navegación con tecnologías asistivas y mejorando el SEO. [Aquí hay una pequeña guía](https://webdesign.solomon.ng/html-and-css/semantic-html/semantic-html.html).
    49
    50 **Atributos `aria-*`**: Una vez que nuestro documento está bien estructurado, los usuarios con tecnologías asistivas deben ser capaces de comprender los cambios que introducimos en el documento a través de las interacciones. Aquí es donde entra `aria-*`, que complementa lo que el HTML no cubre. Sin embargo, _no aria is better than wrong aria_(Es mejor no tener aria a tener uno mal escrito). Si no entiendes el atributo, investiga antes de usarlo. [Esta es una buena introducción a ARIA](https://accessibilityfordevelopers.com/guide-to-aria/) y [aquí está la guía de MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA), que es más amigable que las especificaciones de la W3C.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      agregar espacio luego de wrong aria_

      Edited Sep 08, 2025
      agregar espacio luego de `wrong aria_`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c415d713a828f8048b28966818d462ef37db8b2a_50_50)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/3-convenciones-generales.md 0 → 100644
    37 Por lo tanto:
    38
    39 - Solo importamos cuando la lógica del proyecto no depende de la importación.
    40 - Solo importamos si hemos confirmado que no hay una forma directa o clara de realizar lo que necesitamos con nuestro propio código dentro del tiempo que disponemos.
    41 - Solo importamos bibliotecas que tengan soporte activo (al menos un año).
    42 - Solo importamos bibliotecas con tipado en TypeScript nativo para integrarlas mejor.
    43
    44 ## Accesibilidad
    45
    46 Construir una interfaz de usuario no es solo cuestión de estética. La accesibilidad es fundamental para que nuestras aplicaciones puedan ser usadas por cualquier persona, considerando sus capacidades físicas, cognitivas, sociales, contextuales y tecnológicas.
    47
    48 **HTML Semántico**: Usa las etiquetas correctas (`<button>`, `<nav>`, `<article>`, ... ) en lugar de `<div>` como mantequilla en restaurante francés. El HTML semántico es clave para construir aplicaciones web accesibles desde el inicio, ayudando a los lectores de pantalla a entender la estructura de la página, facilitando la navegación con tecnologías asistivas y mejorando el SEO. [Aquí hay una pequeña guía](https://webdesign.solomon.ng/html-and-css/semantic-html/semantic-html.html).
    49
    50 **Atributos `aria-*`**: Una vez que nuestro documento está bien estructurado, los usuarios con tecnologías asistivas deben ser capaces de comprender los cambios que introducimos en el documento a través de las interacciones. Aquí es donde entra `aria-*`, que complementa lo que el HTML no cubre. Sin embargo, _no aria is better than wrong aria_(Es mejor no tener aria a tener uno mal escrito). Si no entiendes el atributo, investiga antes de usarlo. [Esta es una buena introducción a ARIA](https://accessibilityfordevelopers.com/guide-to-aria/) y [aquí está la guía de MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA), que es más amigable que las especificaciones de la W3C.
    51
    52 **Manejo de Foco**: Es clave que todo lo que se puede hacer con el _mouse_ también se posible hacerlo con el teclado. Asegúrate de que los elementos sean enfocables y que el orden del foco sea lógico.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      typo: sea posible

      Edited Sep 08, 2025
      typo: `sea posible`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c415d713a828f8048b28966818d462ef37db8b2a_52_52)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/4-buenas-practicas-en-typescript.md 0 → 100644
    62 enum Status {
    63 Loading = 'LOADING',
    64 Success = 'SUCCESS',
    65 Error = 'ERROR',
    66 }
    67
    68 const currentStatus = Status.Loading;
    69 ```
    70
    71 El uso de literales es recomendado para un conjunto de valores fijos y acotados. Por ejemplo: `type UserRole = 'admin' | 'guest'`.
    72
    73 ## `any`, `unknown` y `never`
    74
    75 **`any`**: **NO USARLO NUNCA**, salvo que estemos en proceso de migrar algo de JS a TS. Es la peor práctica y anula completamente el propósito de TypeScript.
    76
    77 **`unknown`**: Este es el tipo de dato que debes usar cuando no sabes qué tipo va a entrar. Después, usa _type narrowing_ para trabajar con el valor.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      sería bueno poner un enlace a una explicación a type narrowing (creo que no debería ponerse una explicación explícita aquí en nuestra documentación (sí, valga la redundancia)

      Edited Sep 08, 2025
      sería bueno poner un enlace a una explicación a `type narrowing` (creo que no debería ponerse una explicación explícita aquí en nuestra documentación (sí, valga la redundancia)
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#dd7cd76219033ee17300717daf909051108cd73b_77_77)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/5-buenas-practicas-en-react.md 0 → 100644
    81
    82 ## Props: Cómo pasar y gestionar propiedades
    83
    84 Una de las mayores ventajas de usar TypeScript es que podemos definir la "forma" de las _props_ explícitamente sin usar prop-types, lo que nos permite saber exactamente qué tipo de datos estamos recibiendo y enviando, y evitar errores en tiempo de compilación. Siempre tipamos los props. Esta práctica nos asegura que los datos que pasan entre componentes sean consistentes y predecibles.
    85
    86 Un punto importante es evitar el uso de `React.FC` y similares que sirven para tipar componentes. Aunque parece práctico, puede causar problemas con el tipado de la propiedad `children`, siempre la convierte en opcional, sin importar que la hayamos definido como obligatoria o que el componente no la necesite... lo que podría generar confusiones y _bugs_ difíciles de rastrear.
    87
    88 ## Manejo de Estados: Estrategias claras
    89
    90 Di no a los estados derivados; en lugar de almacenar una variable en el estado que se puede calcular a partir de otros, realizamos el cálculo directamente en el cuerpo del componente, antes del renderizado.
    91
    92 Para manejar el estado, usamos `useState` para estados simples, como booleanos, cadenas, números, objetos, etc. Sin embargo, para estados más complejos que involucran múltiples transiciones o modificaciones, preferimos usar `useReducer`, ya que centraliza la lógica de actualización del estado y la hace más predecible y testeable.
    93
    94 ## Sincronización (`useEffect`)
    95
    96 Dejemos de pensar en `useEffect` como una simple herramienta para efectos secundarios, tomémoslo como un mecanismo de para la sincronización del componente con sistemas externos (fetch, localstorage, etc). Como se sugiere [You might not need an effect](https://react.dev/learn/you-might-not-need-an-effect), a menudo no se necesita un efecto, por lo que es vital usarlo solo cuando es necesario y para lo que fie creado.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      borrar de en un mecanismo de para la sincronización

      Edited Sep 08, 2025
      borrar `de` en `un mecanismo de para la sincronización`
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      typo en fie creado

      Edited Sep 08, 2025
      typo en `fie creado`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c601f0869e8a397ffaaa06df334db2207906725c_96_126)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/5-buenas-practicas-en-react.md 0 → 100644
    121
    122 Para mantener el código claro, un handler debe tener una sola responsabilidad, como hacer una petición a la API o actualizar un estado. Siempre los nombramos con el prefijo handle (ej., handleClick, handleSubmit). Si un handler depende del estado o de las props, lo definimos dentro del componente; si no, lo movemos fuera del componente para que sea más fácil de reutilizar y probar, si solo es usado en este componente, puede dejarse en el mismo archivo, de lo contrario, debe moverse al lugar que la arquitectura de la función haya designado para los helpers y utils.
    123
    124 ## Seguridad y Buenas Prácticas
    125
    126 - **Sanitización de datos**: Asegúrate de que los datos externos se limpien antes de ser renderizados en JSX para prevenir ataques de _cross-site scripting_.
    127
    128 - **Manejo seguro de dependencias del package.json**: La gestión de dependencias es un proceso delicado. Las actualizaciones automáticas solo deben aplicarse para _hotfixes_ y parches menores. Las actualizaciones de versión y los cambios importantes deben hacerse bajo supervisión al menos una vez al año.
    129
    130 - **¡No uses `dangerouslySetInnerHTML`!**: Esta propiedad es peligrosa y debe evitarse. Si es absolutamente necesario, su uso debe estar justificado y el contenido debe ser sanitizado de antemano.
    131
    132 ## Manejo de errores
    133
    134 ### Manejo de Errores Asíncronos
    135
    136 Cada llamada a una API u operación async debe estar envuelta en un bloque try-catch o un chaininng `.then().catch()` apropiado, y los errores deben ser manejados de manera uniforme en toda la aplicación.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      aquí estoy con Cesar y creo que sería mejor decir "encadenado" en lugar de "un chaining"

      Edited Sep 08, 2025
      aquí estoy con Cesar y creo que sería mejor decir "encadenado" en lugar de "un chaining"
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c601f0869e8a397ffaaa06df334db2207906725c_136_166)
      Toggle commit list
    Please register or sign in to reply
  • Erika Suarez
    @esuarez started a discussion on an old version of the diff Sep 05, 2025
    Resolved by Miguel Mejía Sep 08, 2025
    docs/development-rules/sections/front/5-buenas-practicas-en-react.md 0 → 100644
    123
    124 ## Seguridad y Buenas Prácticas
    125
    126 - **Sanitización de datos**: Asegúrate de que los datos externos se limpien antes de ser renderizados en JSX para prevenir ataques de _cross-site scripting_.
    127
    128 - **Manejo seguro de dependencias del package.json**: La gestión de dependencias es un proceso delicado. Las actualizaciones automáticas solo deben aplicarse para _hotfixes_ y parches menores. Las actualizaciones de versión y los cambios importantes deben hacerse bajo supervisión al menos una vez al año.
    129
    130 - **¡No uses `dangerouslySetInnerHTML`!**: Esta propiedad es peligrosa y debe evitarse. Si es absolutamente necesario, su uso debe estar justificado y el contenido debe ser sanitizado de antemano.
    131
    132 ## Manejo de errores
    133
    134 ### Manejo de Errores Asíncronos
    135
    136 Cada llamada a una API u operación async debe estar envuelta en un bloque try-catch o un chaininng `.then().catch()` apropiado, y los errores deben ser manejados de manera uniforme en toda la aplicación.
    137
    138 Una estrategia son los estados de error en hooks personalizados permiten centralizar la lógica de manejo de errores y reutilizarla en múltiples componentes. Lo que ayuda con la consistencia en cómo se manejan los errores en toda la aplicación y facilita el mantenimiento del código.
    • Erika Suarez @esuarez commented Sep 05, 2025
      Master

      yo le agregaría un "que" aquí hooks personalizados <que> permiten

      Edited Sep 08, 2025
      yo le agregaría un "que" aquí `hooks personalizados <que> permiten`
    • Miguel Mejía @magomez

      changed this line in version 4 of the diff

      Sep 08, 2025

      changed this line in version 4 of the diff

      changed this line in [version 4 of the diff](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d#c601f0869e8a397ffaaa06df334db2207906725c_138_168)
      Toggle commit list
    Please register or sign in to reply
  • Miguel Mejía @magomez

    resolved all discussions

    Sep 08, 2025

    resolved all discussions

    resolved all discussions
    Toggle commit list
  • Miguel Mejía @magomez

    added 1 commit

    • 2c14cac8 - Fix some typos and adds some examples

    Compare with previous version

    Sep 08, 2025

    added 1 commit

    • 2c14cac8 - Fix some typos and adds some examples

    Compare with previous version

    added 1 commit * 2c14cac8 - Fix some typos and adds some examples [Compare with previous version](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=335&start_sha=cbac600d9bbf610ca59ed2854c941ae9fea7389d)
    Toggle commit list
  • Miguel Mejía @magomez

    added 1 commit

    • c99cdc69 - Adds arrays & generics legacy observation

    Compare with previous version

    Sep 08, 2025

    added 1 commit

    • c99cdc69 - Adds arrays & generics legacy observation

    Compare with previous version

    added 1 commit * c99cdc69 - Adds arrays &amp; generics legacy observation [Compare with previous version](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=336&start_sha=2c14cac8f2dab57079a362b5d0d269204170d31e)
    Toggle commit list
  • Miguel Mejía @magomez

    added 1 commit

    • 45094797 - Updates explanation of the eslitn config tules

    Compare with previous version

    Sep 08, 2025

    added 1 commit

    • 45094797 - Updates explanation of the eslitn config tules

    Compare with previous version

    added 1 commit * 45094797 - Updates explanation of the eslitn config tules [Compare with previous version](http://gitlab.example.com/pem/software-development-docs/merge_requests/7/diffs?diff_id=337&start_sha=c99cdc69feaf2bae2489501289801fb2356afb6b)
    Toggle commit list
  • Miguel Mejía @magomez

    merged

    Sep 08, 2025

    merged

    merged
    Toggle commit list
  • Miguel Mejía @magomez

    mentioned in commit a3bfb3be

    Sep 08, 2025

    mentioned in commit a3bfb3be

    mentioned in commit a3bfb3be8fd3948fb2bc5edf614dff4f0ce0b430
    Toggle commit list
  • Write
  • Preview
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment
Assignee
No assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
Reference: pem/software-development-docs!7
×

Revert this merge request

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.
×

Cherry-pick this merge request

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.