c#使用非形式的代码来减少重复代码

本文关键字:代码 | 更新日期: 2023-09-27 18:10:58

刚刚完成一个项目,准备开始另一个。我的大学从来没有教过这个,所以我甚至不知道它是否存在。比如说,你的代码是…

MessageBox.Show("Hi");

现在我知道我可以在Form1中调用它。我也知道我可以调用它在另一种形式提供它是在一个公共类/void或什么?

我的问题是,是否有一个图书馆系统,我可以添加30-40个代码片段,每个做自己的工作。所以当我想更新sql或运行计算,我只是从一个库调用代码文件?

对不起,如果我错过了一些明显的谷歌让我疯了,我知道我想问什么,只是不知道怎么问!希望你能理解我的问题。谢谢,问候. .

c#使用非形式的代码来减少重复代码

当然。在Visual Studio的解决方案中,您可以添加一个类库项目,并用您想要的所有可重用代码填充它。然后,解决方案中的任何项目都可以通过向该项目添加项目引用来引用它。

请注意,在这样的事情上很容易走极端。以你的例子为例:

MessageBox.Show("Hi");

MessageBox类与用户界面紧密耦合。所以它属于在用户界面对象中。(这里指的是表单。)这是因为如果你试图在你的类库中使用它,那么你需要将用户界面库添加到那个类库中,使它与特定的用户界面实现更紧密地耦合。这使得类库的可移植性和可重用性大大降低,因为它只能被相同用户界面技术的项目使用。(不能用于web项目,例如。)

因此,您需要考虑将每个通用实用程序封装到其自己的可重用代码中。它是否属于UI、业务对象、数据访问等等?如果它与特定的外围技术(用户界面技术,数据访问技术等)紧密耦合,那么它可能属于那里。

一种方法是拥有多个"公共实用程序"库。使用人为的命名方案,大型企业域解决方案可能有这样的项目:

  • 域。BusinessLogic(类库,被所有东西引用)
  • Application.Forms。AdminPanel (forms application)
  • Application.Forms。OperationsPanel(表单应用程序)
  • Application.Forms。Common(类库,被其他Forms应用引用)
  • Application.Web。PublicWebsite (web application)
  • Application.Web。Common(类库,被其他Web应用引用)
  • Infrastructure.DataAccess。SQLServer(类库,依赖注入到域中)
  • Infrastructure.Vendor。SomeService(类库,依赖注入到域中)
  • 等。

这样,您就有了一个核心业务逻辑项目,其中包含了您正在工作的整个业务领域的通用内容。它应该有没有依赖。(不依赖于用户界面、数据库、框架等)然后是各种技术的应用程序,其中包含具有应用程序耦合公共功能的混合类库。最后还有领域的其他外围,即后端依赖关系。这些可以是你的数据访问层,集成到第三方系统和服务,等等。

由于任何给定的功能都被抽象成一个公共实用程序以减少重复和增加重用,因此请注意保持代码耦合低,以便"公共实用程序"不会被紧密绑定到"不常见的依赖项"。在行业中,与代码重用紧密耦合的情况经常有所增加。(参见单一责任原则。)因此,请运用良好的判断力来避免这种情况。

如果同一段代码服务于多个职责,并且这些职责不应该混合,那么多次编写同一段代码(仅仅通过击键来实现"相同",不一定是出于概念目的)本身并没有什么错。

听起来您想使用静态方法。将你的例程按照它们的功能分组,并将它们放在一个静态类中,例如

internal static class Utility
{
    public static void Method1(int whatever)
    {
        // do stuff
    }
    public static void Method2(string another)
    {
        // do other stuff
    }
}

你可以这样调用它们:

Utility.Method1(7);
Utility.Method2("thingy");

简单的解决方案是创建一个新项目并选择" class Library"选项。这将创建一个被编译成DLL(动态链接库)的类。您可以在任何想要使用此通用代码的地方添加对程序集的引用,然后在使用它的特定文件中,您必须为它添加using语句。

如果你被要求提交多个项目,你可以把它们都放在一个解决方案下。如果您右键单击该解决方案并在下拉菜单中选择属性选项,它将在左侧导航栏中打开一个带有"配置属性"选项的新窗口。选择它,然后您可以指定构建依赖项。因此,如果项目A和项目B使用项目C(类库)中的方法,那么您可以将其设置为构建依赖关系,这意味着无论何时构建项目A, B或解决方案作为一个整体,它都会首先构建项目C。

企业软件通常是这样构建的;一些dll或exe是应用程序级别的代码,然后是许多其他项目,这些项目构建通常由多个项目共享的公共代码。所有这些通常都放在一个解决方案的保护伞下。

如果你走这条路,有更多的细节(像哪个exe默认运行时,你调试),我可以更新。你在大学里可能什么都不会学到,但当你开始第一份工作时,你很可能就会明白这一点。