企图避免修改现有代码,依靠冗余对现有实现进行扩展

现象

项目的现有功能需要升级时,为了避免修改现有代码,重新定义新的API,甚至copy核心业务逻辑代码

完全不遵守DRY原则

《程序员的职业素养》中提到,这种行为是在破坏软件结构

合理解决方案

  • 保持责任心

    拿出时间与精力,勇敢修改现有代码,依靠单测保证正确性(这也体现单测的重要性,恕我直言,没有单测的代码只是一堆垃圾)

    自测与回归测试也同样重要,不可省略

  • 心存善意,对后来人负责

    短期不需要做测试回归,但长期会维护多分类似的代码,很大的可能是永远不会被合并,一般人不愿意冒这个修改的风险

    颇有责任心的优秀的同事会着手重构,他会面临更大的压力,需要更多的回归测试。唉,为前人收拾烂摊子,这不应该是他的义务。

企图提升数据库扩展性,为表预留备用字段

详见这篇文章 程序员应知——数据库设计的两个误区 (此文还介绍了另一个数据库操作的弊端:对数据记录id进行编码,赞作者的分享)

截取文章重点,说明如下

预留备用字段存在如下几个问题

  • 增加大量备用字段,必定会浪费很多空间
  • 用不了多久,就没有人能够说清楚到底哪个字段代表的是什么意义了
  • 增加了这些备用字段就真的会够用吗?

合理解决方案

  • 如果数量很少,而且信息的性质与原表密切相关,那么就可以直接在原表上增加字段,并将相关的数据更新进去
  • 如果数量较大,或者并非是原表对象至关重要的属性,那么就可以新增一个表,然后通过键值连接起来