Serie 0x6 - Restricciones sobre Programación Funcional¶
0x6000 - No usar expresiones lambda¶
Explicación¶
Las expresiones lambda (->) no están permitidas en este curso.
Incorrecto ❌:
lista.forEach(elemento -> System.out.println(elemento));
numeros.stream().filter(n -> n > 10).collect(Collectors.toList());Correcto ✅:
for (String elemento : lista) {
System.out.println(elemento);
}
List<Integer> mayoresADiez = new ArrayList<>();
for (Integer n : numeros) {
if (n > 10) {
mayoresADiez.add(n);
}
}0x6001 - No usar referencias a métodos (method references)¶
Explicación¶
Las referencias a métodos (::) no están permitidas.
Incorrecto ❌:
lista.forEach(System.out::println);
nombres.stream().map(String::toUpperCase).collect(Collectors.toList());Correcto ✅:
for (String elemento : lista) {
System.out.println(elemento);
}
List<String> nombresMayusculas = new ArrayList<>();
for (String nombre : nombres) {
nombresMayusculas.add(nombre.toUpperCase());
}0x6002 - No usar la API de Streams¶
Explicación¶
La API java.util.stream no está permitida en este curso. Usar bucles explícitos.
Incorrecto ❌:
int suma = numeros.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();Correcto ✅:
int suma = 0;
for (Integer numero : numeros) {
if (numero % 2 == 0) {
suma = suma + numero;
}
}0x6004 - No usar métodos funcionales de colecciones¶
Explicación¶
Métodos como forEach(), removeIf(), replaceAll() no están permitidos. Usar iteradores o bucles.
Correcto ✅:
Iterator<String> it = nombres.iterator();
while (it.hasNext()) {
if (it.next().startsWith("A")) {
it.remove();
}
}0x6005 - No usar Collectors ni operaciones de reducción¶
Explicación¶
Usar bucles explícitos para agregaciones y transformaciones.
0x6006 - Preferir bucles for tradicionales o enhanced sobre operaciones funcionales¶
Explicación¶
Los bucles son más explícitos y pedagógicos para entender el flujo de control.
0x6007 - No usar el patrón de composición funcional¶
Explicación¶
Evitar encadenar operaciones funcionales. Usar métodos y asignaciones explícitas.