Все зависит от проблемы, которую вы пытаетесь решить. Очевидно, что вы можете решить любую проблему в любом стиле (процедурном или OO), но обычно вы можете выяснить на этапах планирования, прежде чем начинать писать код, какой стиль вам подходит.
Некоторым людям нравится писать варианты использования, и если они видят, что много и те же существительные появляются снова и снова (например, человек снимает деньги из банка), тогда они идут по маршруту OO и используют существительные как их объекты. И наоборот, если вы не видите много существительных и на самом деле происходит больше глаголов, то процедурный или функциональный путь может быть подходящим.
У Стива Йегге, как обычно, есть отличный, но длинный пост , который затрагивает этот вопрос с другой точки зрения, который также может оказаться полезным.