Практически каждая ветка if в программном коде подразумевает какую-либо категорию.

Единственные if-ы, которые не укладываются в это правило, это, вероятно, проверки поля на пустоту или массива на достижение конца. То есть это больше валидационные проверки, направленные на определение технической возможности выполнить низкоуровневую операцию.

Большая же часть ветвленией - это неявная семантика. Это согласуется с идеей о том, что рефакторинг должен прояснять семантику системы.

Есть большая разница между условным оператором, выбирающим подходящий объект, и тем, что напрямую содержит конкретное поведение.

99 бутылок ООП

В объектно-ориентированных программах всегда лучше использовать ветвления для выбора конкретных экземпляров объектов, чем для процедурного описания выполняемых действий в теле ветки.