4

有时我们不得不在 2 或 3 种技术/策略之间进行选择来开发模块。

现在,对于每个小型或大型组件/模块/项目,我们都有几乎无数的选择。对于那些有多年经验的人来说可能很容易,但对于那些刚接触编程的人来说,比如不到一年的时间就不容易了。

我有时会对 .NET 世界中的数据访问选择感到沮丧。我们不能去阅读市场上的每一种工具,以及它为每一种产品提供的东西。

提出这个问题的原因是最近我们必须处理一个项目,并且 DataAccessLayer 的规范是使用 ADO.NET 完成的。进入项目大约 20% 的过程中,一位新开发人员加入了我们的部门(但不是我们的团队)。我认为他很聪明,乐于助人,我们喜欢和他一起工作。

在代码审查期间,他亲自建议我们最好将 LINQ to SQL 用于我们正在处理的模块。他很有说服力。经过积极的辩论,我们同意使用 LINQ to SQL。

然而,“管理层”对此并不满意。有人争论说我们应该在开始模块之前想出这个“绝妙的主意” 。他们的论点是,到目前为止,20% 的工作已经花费了资源,而这些工作将被浪费掉。

鉴于新产品/技术/策略频繁出现的步伐,我们发现很难获得有关所有这些工具和技术的所有信息。

我们已经成功使用 ADO.NET。我们对 LINQ(一般)、NHibrnate 和许多其他方面有一个想法,但我们继续使用 ADO.NET。我不反对学习新事物,这就是我们共同推动使用 LINQ 的原因。

问题 在我们做这个选择的时候,我们有错吗?

是否有任何指标或指导方针可以决定在某些情况下选择哪种技术,以及何时不中途切换?

4

7 回答 7

4

在开始新项目时牢记所有当前技术是一项具有挑战性且越来越困难的任务。

我总是努力追随最前沿的东西,这样我就知道那里有什么。这是阅读大量博客、参加会议和保持最新状态的问题。

话虽如此,您不想总是使用最前沿的任何东西。我的经验法则是估计产品的发货日期。我尝试使用任何最新的技术,在我们将要发货的日期之前至少收到一个“服务包”或更新。诚然,这涉及很多猜测,因为不知道发货日期,但经验(观察行业)有很大帮助。

有根据地猜测哪些技术会流行,哪些技术会随着时间的推移而消失,这是一门艺术。不幸的是,这真的是一个经验问题。如果您有一位拥有多年经验的开发人员,同时也掌握最新的技术(很重要),那么他们是帮助您做出决策的好资源。

于 2010-01-26T21:32:34.103 回答
4

时间框架和项目风险。这些是基本面。

我对 LINQ 或 ADO.NET 并不熟悉,但这并不重要。

在高层次上,我看不出 LINQ 和 ADO.NET 之间没有区别。我可以看到 LINQ “更好”、“更优雅”、更少代码和更清晰。但是,事实上,如果团队已经熟悉并熟悉 ADO.NET,那么这些风险并不大。您仍然需要将数据进出数据库,并且团队已经知道如何处理“不太优雅、更多代码、不太清晰”的 ADO.NET(请注意,这些只是概括,而不是判断本身) .

如果项目中有时间能够吸收采用 LINQ 之类的东西,而且即使对于新技术也明显更好,那么我可以看到在新工作中采用它,也许在旧的、已完成的工作中对其进行改造。

如果你有一个为期一年的项目,很容易看出时间线上哪里有足够的“松弛”来采用新技术。如果这是一个 1 个月的项目,也许不会那么多。

虽然那里有许多很棒的新技术,而且它们每天都在问世,但可以说很多关于“你知道的魔鬼”与采用新的和未经证实的东西的争论。这就是为什么,就我个人而言,我会在家里以“爱好模式”进行大部分此类探索,以便在新技术可能更适合和适合我们尝试和真实的情况下,我可以更好地了解新项目“老派”方法。

否则,需要在项目规范期间提供时间来证明新技术以确定其在项目开始时是否适合纳入。很多时候,制定规范的人没有得到那个时间。

于 2010-01-26T21:37:33.650 回答
1

拥有 1 年的经验,首先没有选择正确的技术不是您的错。这些决定很难做出,而且需要经验。

这里的过错很可能是项目经理在项目开始时没有提供正确的资源来做出这些架构决策。

于 2010-01-26T21:37:10.787 回答
1

有很多因素可以影响给定解决方案或开发项目的“合适”技术。

很多时候,你会在选项方面受到许多内部和外部的影响,什么是“正确”的,什么是流行的,什么可能是最有趣的。

在我看来,做出“正确”的决定是选择最稳定、记录在案、可行的解决方案。现在要做到这一点,您需要跟上技术并知道那里有什么。因此,紧跟 LINQ、Entity Framework 等是势在必行的。

真正的“艺术”是决定什么适合您的环境,每个环境都不同,您需要考虑许多不同的项目。这只是内部使用吗?如果没有,你对环境有什么样的控制和影响?是否可以使用最新版本的 VS 等?

我不喜欢使用“尖端”,因为它就是这样。使用新工具需要有技术基础。

于 2010-01-26T21:38:17.727 回答
1

在项目已经开始之后切换到 Linq-to-SQL,而且不是每个人都准备好,这可能是一个错误,是的。即使您一开始就应该使用它,但最好在项目开始后坚持您所知道的。反之则不同:如果您在项目开始时尝试新的东西并且进展很糟糕,最好切换回更熟悉的东西。

在 Linq-to-sql 的情况下,它不太可能给您带来值得在项目中切换到它的优势。这是一场赌博,不幸的是,这听起来好像没有成功。

.Net 数据访问选项让我们中的许多人发疯。你并不孤单。即使试图了解所有技术也变得越来越困难。要正确评估,您必须有经验并彻底调查。你肯定不想尝试最新的东西,因为它看起来很整洁。我们熟悉的一些旧技术(如 ADO.NET)工作得很好。

于 2010-01-26T21:39:49.563 回答
0

有一半的时间感觉更多的是使用您手头的资源(即人们知道哪些语言?)以及我们获得了哪些许可?

于 2010-01-26T21:34:18.603 回答
0

使用“LINQ”不一定是一个“奇妙”的想法,无论是在项目的开始还是结束。如果您的团队有使用 ADO.NET 的经验并使用该技术成功完成了项目,那么这确实是您应该使用的技术。

重点是,如果您有一个团队“了解”VB6 的内部和外部......那么猜猜是什么......你更喜欢编写VB6。

使用团队中大多数人都熟悉且知识渊博的技术。(希望这就是你招聘的目标。)

于 2010-01-26T21:39:44.207 回答