В своем блоге Кайл Шевлин предложил, что, если компонент имеет ограниченный набор вариантов обработки, то будет удобнее иметь четкие отдельные ветки if/else для каждого случая, а не распространять условные выражения повсюду в JSX. Сравните два примера:
function VideoControls() {
const { isPlaying, play, pause } = useVideoControls()
return (
<Button onPress={isPlaying ? pause : play}>
<Icon name={isPlaying ? 'pause' : 'play'} />
<Button.Text>{isPlaying ? 'Pause' : 'Play'}</Button.Text>
</Button>
)
}
function VideoControls() {
const { isPlaying, play, pause } = useVideoControls()
if (isPlaying) {
return (
<Button onPress={pause}>
<Icon name="pause" />
<Button.Text>Pause</Button.Text>
</Button>
)
}
return (
<Button onPress={play}>
<Icon name="play" />
<Button.Text>Play</Button.Text>
</Button>
)
}
Хоть и во втором примере больше кода, он более читабельный. По мере усложнения проекта уменьшается скорость чтения кода, наличие условных операторов особенно усложняет понимание кода. Во втором примере вместо трех условных операторов используется только один условный оператор. Код стал понятнее и менее подвержен багам.
https://kyleshevlin.com/prefer-multiple-compositions/