C# 犯了错误的程序设计罪
我在读罗伯特·罗斯尼关于你必须维护的最不健全的程序是什么?发现于:当我意识到我无意中开发了一个几乎相同的应用程序时! 该应用程序由一个HTTPListener对象组成,该对象捕获传入的POST请求。根据标头中的信息,我将请求主体传递给SQL Server以执行适当的事务。 请求如下所示:C# 犯了错误的程序设计罪,c#,sql,xml,stored-procedures,anti-patterns,C#,Sql,Xml,Stored Procedures,Anti Patterns,我在读罗伯特·罗斯尼关于你必须维护的最不健全的程序是什么?发现于:当我意识到我无意中开发了一个几乎相同的应用程序时! 该应用程序由一个HTTPListener对象组成,该对象捕获传入的POST请求。根据标头中的信息,我将请求主体传递给SQL Server以执行适当的事务。 请求如下所示: <InvoiceCreate Control="389> <Invoice> <CustomerNumber>5555</CustomerNumb
<InvoiceCreate Control="389>
<Invoice>
<CustomerNumber>5555</CustomerNumber>
<Total>300.00</Total>
<RushOrder>1</RushOrder>
</Invoice>
</InvoiceCreate>
然后,我在同一存储过程中使用另一条SELECT语句返回插入到发票表中的新发票号的值:
SELECT @NEW_INVOICE_NUMBER FOR XML PATH 'InvoiceCreateAck'
然后,我使用C中的SQL数据读取器对象读取生成的XML,并将其用作HTTPListener对象的响应
我的问题是,我注意到罗伯特确实是对的。我的所有应用程序逻辑都存在于存储过程中,因此我发现自己必须进行大量错误检查,即验证存储过程中的customer number和invoicenumber值
我仍然是一名中级开发人员,因此,我希望改进。考虑到最初的帖子和我目前的架构,我可以做些什么来改进应用程序?是否有任何模式或最佳实践可供我参考?你会采取什么方法?我愿意接受任何和所有的批评,因为我想尽自己的一份力量减少世界上不合理的编程数量。不确定具体的模式,但你需要定义你的层并坚持下去。我在这里使用的图层非常松散。您有一个层需要解析XML。您有一个读取HTTP请求的层。您有一个层进行数据访问。如果您使用的是C,那么可能有3个独立的类 我不会在存储过程中这样做。根据我的经验,如果您更改了数据库,那么做这些工作几乎就是完全重写。测试也很难 对于数据访问,您仍然可以使用存储过程。我个人只会使用C编写简单的insert语句。我只会努力将任何业务逻辑排除在存储过程之外。保留任何业务逻辑,在C中解析,因为这将更容易在以后移植 祝你好运
SELECT @NEW_INVOICE_NUMBER FOR XML PATH 'InvoiceCreateAck'