Основным недостатком является потеря пользовательского форматирования там, где это действительно важно.
Представьте себе типичную проверку работоспособности if (), которая завершится неудачей, если какое-либо из определенных условий присутствует, но не выполнено ...
if(
(user.id == TEST_ID)
||(
(user.id == UserID)
&&(
( user.type == HUMAN_USER && user.name.size() >= MIN_NAME )
||( user.type == EMULATION && input.source != SOURCE_INTERNAL ))
&& ( user.email == NULL || emailValidator.isValid(user.email))
&& ( (user.phone == NULL) == (user.type == EMULATION) )
// several more lines like this.)
){ /* handle results */ }
Это читается благодаря разумному отступу, соответствующему логической структуре условий.
Теперь ваш автоматизированный инструмент не имеет понятия о логическом разделении различных условий на связанные строки. Он не видит причин, по которым каждое слияние 3-4 условий в одной строке делит следующее условие пополам. Или это разделит это, одно выражение сравнения на строку. Это может даже выглядеть красивее на экране, но логика будет потеряна.