Flutter (Dart) - Convenciones del lenguaje

Las convenciones de código en Flutter (utilizando el lenguaje de programación Dart) son importantes para mantener un estilo de programación consistente en proyectos, mejorar la legibilidad del código y facilitar la colaboración en equipos. A continuación, se presentan algunas convenciones comunes en Flutter y Dart:

  1. CamelCase para Nombres de Variables y Funciones:
    • Los nombres de variables y funciones deben usar camelCase, donde la primera palabra comienza con minúscula y las palabras subsiguientes comienzan con mayúsculas.
    • Ejemplo: myVariable, calculateTotal, buildWidget
    • Item item;
      const double bookPrice = 3.14;
      final String urlScheme = 'Hello World!';
      void sum(int bookPrice) {
        // ...
      }

  2. PascalCase para Nombres de Clases y Tipos:
    • Los nombres de clases, enums y tipos deben usar PascalCase, donde cada palabra comienza con una letra mayúscula.
    • Ejemplo: MyClass, ProductModel, OrderStatus
    • class MainScreen { ... }
      enum MainItem { .. }
      typedef Predicate<T> = bool Function(T value);
      extension MyList<T> on List<T> { ... }

  3. SnakeCase
    • Librerías, paquetes, directorios (carpetas), nombre del proyecto y nombre de los archivos deben usar “snake case” es decir las palabras se escriben con minúsculas y se separan con un guión bajo.
    • library firebase_dynamic_links;
      import 'socket/socket_manager.dart';

  4. Prefijo de "_" para Campos Privados:
    • Los campos privados en una clase deben tener un prefijo de "_".
    • Ejemplo: _privateField, _dataList
  5. Evitar Prefijos Redundantes:
    • Evitar el uso de prefijos como "m_" para campos privados, ya que Dart tiene una convención incorporada para campos privados (prefijo de "_").
  6. Uso de Acrónimos:
    • Los acrónimos en los nombres deben escribirse usando PascalCase, independientemente de cómo se pronuncian.
    • Ejemplo: XMLParser, HTMLDecoder
  7. Evitar Nombres Genéricos Simples:
    • Los nombres genéricos, como T, deben evitarse a menos que sean muy obvios en su uso.
    • Preferible: TItem, TResult
  8. Sufijo de "State" para Clases de Estado en Widgets:
    • Las clases de estado en widgets StatefulWidget deben tener un sufijo "State".
    • Ejemplo: MyWidget (Widget) y MyWidgetState (State)
  9. Comentarios Significativos:
    • Utilizar comentarios claros y significativos para explicar partes importantes del código y documentar las decisiones de diseño.
  10. Formato de Código Consistente:
    • Mantener la indentación, el espaciado y el formato de código consistente según las guías de estilo recomendadas (Line Length: 80).

Estructura de carpetas y archivos con Clean Architecture

lib
-app

-l10n

  app_en.arb

  app_es.arb
-src

 -user_detail

  -application

    user_detail_service.dart

  -domain

    user_detail.dart

    user_detail_repository.dart

  -infrastructure

    user_detail_http_repository.dart

 -company
-ui

 -pages

  -home

   -cubits

     home_state.dart

     home_cubit.dart

   -widgets

     home_button.dart

    home_page.dart

  -profile

 -routes

   route_name.dart

   route_page.dart

 -theme

   app_theme_data.dart

 -widgets

Comentarios

Entradas populares