имхо пишут так как люди думают, т.е. вот это все OOP, процедурное и какое там еще напидумывали слов, это ведь все не просто так откуда-то свалилось, а так люди думают.
в написании имхо главное - не oop/procedural/functional/etc, а простота и понятность и отсутствие зауми (сам страдаю таким, да

).
+ тесты, да, но не все можно протестировать.
+ рефакторинг да, но это вообще идет из здравого смысла, просто это дело с тестами - очередной modern hype.
ну и есть факторы коммандные, которые в общем-то очень важны, как привыкли писать в комманде - так и пишут новые люди, просто иначе бардак, но тут здравый смысл опять же должен быть первичен имхо.
у нас народ пишет где как, как удобнее задачу выразить, где-то красивенькое oo, а где-то красивенькое procedural с классами в качестве namespaces.
на C++ я местами пишу вообще функционально, когда удобно.
т.е. это я все веду к тому, что нельзя вот так в общем сказать, очень depends от людей(первично) и задач(после людей).