Así que tengo este código que funciona perfectamente, solo que se ve feo y ocupa mucho espacio. ¿Hay alguna manera de reducir la cantidad de líneas que toma este código? Código aquí:
radius: Platform.OS === 'android' ? showMore === 1 ? androidRadius * 2 : showMore === 2 ? androidRadius * 4 : showMore === 3 ? androidRadius * 10 : showMore === 4 ? androidRadius * 25 : showMore === 5 ? androidRadius * 50 : showMore === 6 ? androidRadius * 100 : androidRadius : showMore === 1 ? iosRadius * 2 : showMore === 2 ? iosRadius * 4 : showMore === 3 ? iosRadius * 10 : showMore === 4 ? iosRadius * 25 : showMore === 5 ? iosRadius * 50 : showMore === 6 ? iosRadius * 100 : iosRadius,
Es bastante fácil limpiar este tipo de condición mediante el mapeo, por ejemplo:
const radiusMap = {1: 2, 2: 4, 3: 10, 4: 25, 5: 50, 6: 100}; const platformRadius = Platform.OS === 'android' ? androidRadius: iosRadius; // finally, return { radius: radiusMap[platformRadius] || platformRadius };Esto tomará el radio del mapa de radios y también devolverá un radio predeterminado si no se encuentra ningún radio en el mapa.
Usualmente uso búsquedas de objetos para estas situaciones. Entonces, para los casos showMore , puede hacer esto: -
function getRadius(deviceRadius, showMoreValue){ const showMoreCases = { 1: deviceRadius * 2, 2: deviceRadius * 4, 3: deviceRadius * 10, 4: deviceRadius * 25, 5: deviceRadius * 50, 6: deviceRadius * 100, } return showMoreCases[showMoreValue] || deviceRadius; }Y puedes usarlo en la primera condición así: -
radius: Platform.OS === 'android' ? getRadius(androidRadius, showMore) : getRadius(iosRadius, showMore)