系统中的代码各有各的目的,有些处理领域逻辑,有些处理用户界面,有些处理数据库的访问…这些代码的关注点各不相同。但在很多开发团队中,并没有明确的手段来分离代码的关注点,从而使不同关注点的代码混在一起,这样就会造成以下几个问题。
- 难以单独识别出反映领域逻辑的代码,从而难以保证与领域模型的一致性。
- 应该内聚的逻辑分散在不同地方,应该解耦的逻辑又混在一起,造成代码难以理解。
- 修改业务代码,可能会影响技术代码,修改技术代码,又可能会影响业务代码,造成代码很难维护。
- 经过一段时间的变更,代码变得日益混乱,代码中出现大量重复和不一致,经常出现质量问题。
这种难以维护,毫无规范的代码就被称为“大泥球”(big ball of mud)。