内聚和耦合之间的区别是什么?耦合和内聚如何导致软件设计的好坏?举些什么例子来概括这两者之间的区别,以及它们对整体代码质量的影响?