I m从事遗产软件系统的工作,我的任务是将一些旧的COM部件迁移到。 NET 3.5。 COM构成部分最初设在多边贸易体系,然后设在构成部分服务。 在NET港口,我们重新处理与ADO公司的交易。 NET交易,因此,方法签名正在发生变化。
我所面临的困境是参数顺序。 每个方法都要求你通过SqlConnection或Sql Transaction(取决于该方法是否更新数据库)。 某些方法自然可以用不同的论据加以援引。 例如:
Keyword.Load(string description, SqlTransaction transaction)
纽约总部
Keyword.Load(string description, string tag, SqlTransaction transaction)
目前,提供多载荷的框架中的多数方法如下:
A(int arg1)
A(int arg1, string arg2)
A(int arg1, string arg2, DateTime arg3)
值得注意的是,尽管超载,但参数订单还是一致的。 然而,我真的要强调,要求用户通过连接或交易。 通常,这些是最后提出的论点。 但是,在我看来,将其放在首位的最佳位置是:
A(SqlTransaction transaction)
A(SqlTransaction transaction, int arg1)
不幸的是,如果这种中断是在申报超负荷时,既无关联,也无交易,而是为你制造:
// These overloads create a connection, open it, and start a new transaction.
A()
A(int arg1)
A(int arg1, string arg2)
A(int arg1, string arg2)
A(int arg1, string arg2, DateTime arg3)
// These overloads require that the transaction be passed in, so that the method
// can take part in it.
A(SqlTransaction transaction)
A(SqlTransaction transaction, int arg1)
A(SqlTransaction transaction, int arg1, string arg2)
A(SqlTransaction transaction, int arg1, string arg2, DateTime arg3)
你可以看到,这要求增加超负荷,使之正确,但我似乎更清楚强调交易或联系。
如果是我,你会选择什么道路? 是否有一条设计准则规定如何处理类似情况? 处理超载荷是否太多?