在解决方案中组织项目并避免重复代码

时间:2014-08-29 19:59:35

标签: c# visual-studio code-duplication

我正在尝试通过开发一个小应用程序来学习VS / C#/ Sql Server。我有很多成功(和兴奋)得到我想要的结果,但在退回后我意识到我正在以更线性的方式编程(从我的大型机背景)并没有利用OOP。我也发现自己重复代码。

VS中的'解决方案'到目前为止由以下“项目”组成(我将每个项目创建为“控制台应用程序”以保持简单):

  • 项目1:通过生成年份的日期(将每年运行)来创建主日期文件(DB)
  • 项目2:将历史数据(从Excel(CSV)文件转换为多个数据库表(此流程将随机运行,将在新公司注册时运行)
  • 项目3:通过Excel(CSV)输入更新数据库表(也随机运行)
  • 项目4:为多家公司安排可用性(每周例行程序)

我目前的困境是双重的: 1)我不确定如何在我的解决方案中的不同项目之间共享代码 - 对于项目2到4,我正在征求公司ID和其他参数的用户输入。如何在项目中共享此代码?我会为“控制台输入”创建一个类并将其引用到每个类吗? 2)我不确定我是否在项目中正确地分配了我的任务。 - 因为这些都是独立运行的进程,设计它的唯一方法是将它们分开在不同的项目中......对吗?

任何有关在VS环境中组织的提示都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

您可以使用对象(实体)创建类库,并在应用程序中重用。例如:

1项目:Master_Datefile_Objects =实体和商业智能

1.1项目:Master_Datefile_Forms或任何其他(控制台,服务等);

在您的实体和控制您的实体的类中分隔文件夹。

例如:

文件夹:经理(在数据库中查找您的实体以及项目的所有逻辑)

//内部只能在当前项目中访问

internal class MyClass_Student_Manager
{
  public MyClass_Student_Model returnStudent(int ID)
  {
    return (your_Query_In_YourDataBase(ID));
  }
}

文件夹:型号

public class MyClass_Student_Model
{
   public int ID {get; set;}

   public string name {get; set;}
}

文件夹:facade

此课程将访问您的经理方法

public class myProject_Facade
{
   public MyClass_Student_Model returnStudent(int ID)
  {
    return new MyClass_Student_Manager().returnStudent(ID);
  }
}

在您的其他项目(Master_Datefile_Forms)中,您将调用Facade方法引用您的项目Master_Datefile_Objects。

这是一个例子。如果要重用MyClass_Student和逻辑,可以在其他解决方案中导入项目。

答案 1 :(得分:0)

我也在学习Visual Studio,C#和SQL。我发现我最喜欢的模式似乎是使用三层应用程序模式。

第一层由数据层组成。它所做的只是与您的数据库或其他数据源的接口,并使其上面的层可用和可用。第二层由服务层组成。它处理业务逻辑。第三层由表示层组成,唯一的目的是用户交互。

对我有用的是创建一个解决方案,其中包含每个层的一个项目。这有助于分离问题,并且由于每个项目都包含在同一解决方案中,因此它们可以相互引用。话虽如此,对于大型项目,我发现将相关代码分解为项目中的单独文件夹是有帮助的。

希望这有帮助,这是我的第一个Stack Overflow答案。