我最近的任务是向两位我们公司拟聘用的候选人解释一个我写的(内部)应用程序,以便协助维护和添加一些次要功能。
这是我写的第一个“生产”应用程序,有45k行代码,我花了将近两年的时间进行“独立”开发。我相当年轻(18岁),在被聘为一位离开公司的前任开发人员的替代者时,从头开始编写了该应用程序。由于缺乏设计这种规模应用程序的经验,我尝试使用常见的架构和设计模式。
今天我知道自己做了一些严重的过度工程化,例如使用了断开连接的更改跟踪架构,而不是已实现的工作单元模式。我可能永远不需要真正的三层结构。
两位候选人都具有10年以上的内部应用程序开发经验,并掌握相关平台。作为年龄比他们小且经验较少的人,我尊重他们的意见。当我向他们解释应用程序架构时,他们的评论大致如下:
- 天哪,没有人会付钱让我做那样的事情,我必须完成任务
- 坚持使用框架所做的事情,不要使用花哨的库/技术
- 不要包装框架代码。团队中,每个人都会编写自己的包装器代码。
- 你在使用.NET 3.5吗?嗯,我们使用2.0。
- LINQ有什么用?所有这些查询组成和投影似乎太复杂了。
我是一个架构宇航员吗?我怎么知道我的架构过于复杂了?过度工程化的常见症状是什么?