仅仅一些暂时的想法...
我觉得面向对象相对与面向过程,最大的改善不是应对软件的变化而是对于客户程序/过程/函数的私有数据/函数的隐藏。
面向过程程序设计通过良好的结构设计,高内聚低耦合,实际上也能够比较容易通过较小的修改来的应对变化。
面向过程的程序设计中虽然总是强调高内聚低耦合,但是实际过程中总是不一定设计的所有子程序都是功能内聚松耦合的,同时还有可能存在数据结构耦合(我感觉结构化设计中最容易出现的耦合)等,如果是一个拙劣的设计好的内聚就更不要提了。。。
同时面向对象程序设计对比面向过程程序设计对程序员的要求要更低,因为前后要求你遵守设计应用设计,而后者要求你有设计。。。
然而因为一些过程函数之间因为某些原因是总应该是耦合的,例如因为性能考虑产生的数据结构耦合,即使在性能和优雅之间权衡,选择了解决数据结构耦合的问题,同时克服各种困难很大程度上设计了高内聚低耦合的代码,对私有数据的保护依然很难实现...
所以简单来说,珍爱生命,面向对象:)