pile of folders

Usando IA para obtener estructura de carpetas

Usando la IA Gemini de Google para estandarizar mi estructura de las carpetas de mis aplicaciones java de acuerdo a los standares generales.

Durante mi carrera he armado mi propia estructura de carpetas AD-HOC usando como ejemplo las diversas aplicaciones que tenido que intervenir, finalmente llegé a una estructura que si bien es cómoda para mí, posiblemente sea algo compleja o poco natural para quien deba modificarla en el futuro, es por eso que me propuse ordenar de una forma más general y standard los archivos de mis futuros trabajos, si bien, era algo que hace tiempo deseaba hacer, por lo que preguntaba a otros colegas la forma en que ordenaban las carpetas.. pero vi que todos tenían sus propias formas de estructurar, ya sea por las características de los frameworks o simplemente por comodidad, finalmente llegé al mismo punto inicial.

Una idea interesante que tuve hoy fue la de consultar a la IA la respuesta a mi problema, esperando que esa voz inparcial me diese una solución sin sesgos y directa y quiero compartir este desarrollo por si alguien tiene esta misma duda y desea usar (o incluso complementar) esta respuesta, sólo por motivos de contextualizar el ejemplo le pedí que usara como base una aplicación SpringBoot Java:

Bash
├── app
   ├── controllers
      ├── HomeController.java
      └── UserController.java
   ├── entities
      ├── User.java
      └── ...
   ├── repositories
      ├── UserRepository.java
      └── ...
   ├── services
      ├── IUserService.java
      ├── UserService.java
      └── ...
   └── utils
       ├── AppConfig.java
       └── ...
└── src
    ├── main
       ├── java
          ├── com
             ├── example
                ├── App.java
                └── ...
          └── ...
    └── resources
        ├── application.properties
        └── ...

Explicación:

  • app: Contiene el código fuente de la aplicación.
  • controllers: Contiene los controladores MVC.
  • entities: Contiene las clases de modelo que representan las entidades del sistema.
  • repositories: Contiene los repositorios que implementan el patrón Repository para abstraer la lógica de acceso a datos.
  • services: Contiene los servicios que encapsulan la lógica de negocio de la aplicación.
  • utils: Contiene archivos de utilidades comunes a toda la aplicación.
  • src/main/java: Contiene el código fuente de la aplicación Java.
  • src/main/resources: Contiene los archivos de configuración y recursos de la aplicación.

Ejemplo de código:

Java

// UserController.java

@RestController
public class UserController {

    @Autowired
    private IUserService userService;

    @GetMapping("/")
    public String index() {
        return "Hola Spring Boot!";
    }

    @GetMapping("/users")
    public List<User> getAllUsers() {
        return userService.findAll();
    }

}

// UserService.java

@Service
public class UserService implements IUserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public List<User> findAll() {
        return userRepository.findAll();
    }

}

// UserRepository.java

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}
Java

En este ejemplo:

  • La clase UserController es un controlador MVC que expone dos endpoints: / e /users.
  • La clase UserService es un servicio que encapsula la lógica de negocio para la gestión de usuarios.
  • La clase UserRepository es un repositorio que implementa el patrón Repository para acceder a los datos de la entidad User.

Conclusión:

La estructura de carpetas propuesta para una aplicación Spring Boot es similar a la estructura de carpetas para una aplicación MVC con Model DAO Services. La principal diferencia es que la capa de acceso a datos se implementa utilizando la tecnología JPA (Java Persistence API).

Nota: Esta es solo una estructura de ejemplo, y puede ser modificada para adaptarse a las necesidades específicas de cada proyecto.

HOLA! si te gustó o te fue útil, por favor, considera dejarme un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.