如何组织我的代码(我在网站上为各种用途创建的方法)

时间:2010-10-14 01:03:26

标签: c# asp.net methods webforms

我写了一些代码将应用程序连接到它的数据库,然后我创建了一些代码来使用连接代码并检索,更新或向数据库添加一些值。另外,我可能有一些代码来处理其他东西而不是处理数据库

代码有点复杂,也许它很简单,但它不短,例如编写一段好的代码来检索单个值,这样我就可以用我用过的这个值设置控制器:

SqlConnection sqlconnection= new SqlConnection(ConfigurationManager.ConnectionStrings["DefConnectionString"].ConnectionString);
        SqlCommand sqlcommand = new SqlCommand("SELECT name FROM message  WHERE id = 3", sqlconnection);

        try
        {
            sqlconnection.Open();
            lbl_name.Text = (string)sqlcommand.ExecuteScalar();
            Status.Text = "Done";
        }

        catch (Exception ex)
        {
            Status.Text = ex.Message;
        }

        finally
        {
            sqlconnection.Close();
        }

我甚至可以添加一些代码来在数据库中存储一些关于抛出任何异常的信息,我认为代码非常基本,但它不小,因为它是我需要的最小部分,一些巨大的代码是为添加或编辑新项目而编写,并且还认为它不是我在页面中写的唯一代码,页面有更多需求:D!

我已经提供了一个我希望的详细案例!...那么您认为什么是使我的页面快速易读且具有组织代码的最佳方式 我已经开始将每个代码放在一个合适的方法中,但是有些方法很常见,所以我在需要它们的每个页面中再次创建它们就像ConnectionToDataBase方法一样,这意味着我认为我只是组织了页面,所以我主要看看Page_Load并查看所谓的方法是什么,然后向下滚动以阅读定义,但它仍然是一个大页面并注意我认为的最佳实践

对不起所有重大问题,我只是提供详细信息,以便我能够对我的问题得到合理的答案,我希望每个人都能从中受益,因为大多数问题都非常基本,像我这样的新手需要一些详细的案例和答案来获得更好的开始......谢谢你的时间!

编辑:我知道我是新手,所以对我的代码的任何评论都非常受欢迎!

1 个答案:

答案 0 :(得分:2)

一些快速观察:

  1. 不要使用内联SQL,因为它是一个需要维护的熊(与存储过程一起使用,或者如果您正在进行基本的CRUD操作,请考虑使用ORM)
  2. 另外(根据以下评论,这是非常相关的)如果您必须使用内联SQL,在最终将您的值连接到命令文本的情况下,您可能会让自己对SQL注入攻击开放(一般情况下)在任何情况下都应该避免使用内联SQL。

    1. 不要全局捕获和吞噬异常 - 只捕获实际处理它们的异常 - 否则,将它们重新冒泡。

    2. 您需要将数据访问代码抽象为独立于业务对象的数据访问层(我是存储库模式的粉丝),或者(最好)考虑ORM(我强烈建议使用NHibernate) ,可能是实体框架4,它有更好的POCO支持)。

    3. 一般来说,我如何构造这种数据是有一个业务对象有一个存储库对象的引用 - 这被定义为一个接口,所以我可以通过依赖注入交换我的测试和实际实现。

      然后数据存储库执行相关的繁重工作(通常通过ORM,有时在ADO.Net中用于我们的一些遗留代码) - 所以如果我需要一个客户列表,我只需要调用'GetCustomers'方法存储库。业务层不知道数据访问,它只知道当它调用一个方法时它会返回一个很好的强类型列表。

      [回答请求RE组织]

      当我将此模式用于MVC网站时,我通常让我的控制器调用业务逻辑类。它的目的是封装它从我的数据访问层检索的非数据特定的计算等。

      反过来,业务逻辑类将引用一个或多个存储库,这些存储库封装了我的数据和业务类之间的数据传输(比如保存/检索数据等)。

      存储库负责提供数据(同样,ADO.Net,NHibernate,EF,适用于您的任何工作)。它应该没有业务逻辑,只是足以从我的数据库中获取数据,适当地调整它,并将基本的非数据特定对象返回给业务层。

      我的博客(在我的个人资料中提供)中有一些关于此组织的示例,虽然它们是特定于NHibernate的,但显示了存储库模式的基本用法。

      希望有助于:)