【发布时间】:2010-12-28 20:17:15
【问题描述】:
我最近发现自己正在解释我写给我公司喜欢雇用的两名候选人的(内部)申请,以协助维护和添加次要功能。
这是我编写的第一个“生产”应用程序,它有 45k LOC,我花了将近两年的时间“单独”开发它。我还很年轻(18 岁),从头开始编写应用程序,同时作为离开公司的前开发人员的替身合同。在设计这种规模的应用程序方面缺乏经验,我尝试使用常见的架构和设计模式。
今天我知道我做了一些严重的过度设计,例如使用断开连接的更改跟踪架构,而不是所选 ORM 已经实现的工作单元模式。我可能永远不必去“真正的”三层。
两位候选人都有 10 年以上的相关平台内部应用程序开发背景。作为他们的一半年龄并且没有什么经验,我确实尊重他们的意见。当我向他们解释应用程序架构时,cmets 的思路是:
- 天啊,没有人会付钱给我做那样的事情,我必须把事情做好
- 坚持框架的作用,不要使用花哨的库/技术
- 不要包装框架代码。在一个团队中,无论如何,每个人都会编写自己的封装代码。
- 您使用的是 .NET 3.5?好吧,我们使用的是 2.0。
- 那些 LINQ 的东西给我带来了什么?所有这些查询组合和投影似乎都太复杂了。
现在我问自己:
我是architecture astronaut 吗?我怎么知道我在建筑方面走得太远了?过度设计的常见症状是什么?
【问题讨论】:
-
这可能是作为一个社区 wiki 的最佳选择 - 对于什么是过度工程可能没有广泛的共识。
-
有时拥有 10 年以上经验的人是团队中最好的,有时他是职业业余爱好者。有时没有学位的高中生在高年级表现出色,有时他们一生中从未编写过一行代码,并认为编程看起来像这样:youtube.com/watch?v=gwlE1aASc4g。不管它的价值是什么,我们都容易过度设计。我不会汗流浃背,特别是如果那些人还没有真正看过真正的代码的话。只需进行几次大扫除即可删除任何看起来像 DailyWTF 材料的内容并称其为好。
-
同意 Juliet - 如果你正在从中学习并且它有效,那么不要担心。几乎每个人都变得过于复杂,然后随着您获得更多经验而弄清楚如何以更简单的方式进行编码。至少你想过……
标签: architecture infrastructure