【发布时间】:2017-10-02 09:03:55
【问题描述】:
作为一名前 Matlab 用户,我发现使用类很难,因为在 Matlab 中我不习惯使用类。
现在,我有 C# Winforms 项目,它工作正常,但我觉得它有代码味道并且设计模式错误。大多数时候,我正在做的是创建静态类并在该类中实现所有相关方法。归根结底,我的项目充满了这些静态类。
如果您查看这些代码并就可以采取哪些措施来改进代码提出一些建议,那就太好了。
- 假设我有主窗口,它有 3 个按钮(添加、更新、 删除数据库中的记录)
- 然后,我有一个包含所有相关方法的静态类。
所以我的问题是完成同样事情的更好方法是什么?
Main.cs
private void AddNewRecord_Click(object sender, EventArgs e)
{
DatabaseOperations.AddRecord();
}
private void UpdateRecord_Click(object sender, EventArgs e)
{
DatabaseOperations.UpdateRecord();
}
private void DeleteRecord_Click(object sender, EventArgs e)
{
DatabaseOperations.DeleteRecord();
}
DatabaseOperations.cs 这是包含所有相关方法的静态类。
namespace MyApp
{
public static class DatabaseOperations
{
internal static void AddRecord()
{
// Implements a method that adding a new record in database
}
internal static void UpdateRecord()
{
// Implements a method that updating an existing record in database
}
internal static void DeleteRecord()
{
// Implements a method that deleting an existing record in database
}
}
}
【问题讨论】:
-
关于代码异味等问题(寻求评论)请访问CodeReview
-
这是您与许多来自纯函数式语言背景的人分享的问题。我觉得这在 SO 上是无法回答的。您应该阅读一般的 OOP 和 C# 中的 OOP。不要试图做你在 Matlab 中所做的事情。 “清空杯子”,用 C#/OOP 的方式做事。
-
正如@EpicKip 所写,这是一个CodeReview 问题或ProgrammersSO 问题。我倾向于说是后者(因为您显示的代码只是您通常所做的示例,而不是您需要帮助的特定案例)。
-
如果这种方法对你有用 - 很好。我能看到的唯一问题是您是否编写或稍后决定为您的代码编写单元测试。使用静态方法,您将无法“模拟”与特定单元无关的代码。