在一个类中只有共享的函数/方法是否是一种良好的习惯?

问题描述:

对不起,长标题。以下是我经常遇到的窗体应用程序的示例情况。我的应用程序中的大部分代码都围绕着UI,所以恰巧我的大部分代码都在主类(MainWindow)中。这是我打算如何分解我的代码的一个比喻。当用户执行操作时,我将不得不将压缩文件写入磁盘。所以它看起来像这样。这是一个很好的做法。这只是尝试更好地组织我的代码。在一个类中只有共享的函数/方法是否是一种良好的习惯?

Public class MainForm 

    Private Sub TempButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TempButton.Click 
     Compression.CompressFile(fileStream) 
    End Sub 

End Class 


Public Class Compression 

    Private Sub New 
      'Private constructor 
    End Sub 

    Public Shared Sub CompressFile(ByVal inFile as stream) 

    End Sub 

    Public Shared Sub DeCompressFile(ByVal inFile as stream) 

    End Sub 

End Class 
+2

此问题可能更适合代码审查论坛 – 2012-08-02 20:05:22

这是一种常见的模式。

但是,这些函数应该在Module(或C#中的static class)中。

+0

如果它们与课程相关,将它们分开可以获得什么? – 2012-08-02 20:10:15

+0

@RobbieDee:与哪一类相关? – SLaks 2012-08-02 20:12:10

+0

如果共享函数仅与类相关,那么根据定义,它们属于类 - 不在单独的模块或静态类中...... – 2012-08-02 20:13:57

如果类的方法不需要类对象的实例,那么最好使方法成为Shared。

+0

他已经让他们成为“Shared '。阅读问题。 – SLaks 2012-08-02 20:12:26

+0

是的,我同意他/她:) :) – 2012-08-02 20:21:03

是不是只有在一个类*享函数/方法是一个好习惯?

不。通常开发者会调用这些帮助类。它看起来可以开始,但很快下线这些助手类会疯狂增长,并包含很多责任。这些辅助类本质上是静态的。这些voOOO设计的SRP(单一责任原则)。我称他们为上帝阶级。他们知道一切:)

你应该更喜欢有一个共同的基类或抽象类来代替。

+0

其实,这是非常普遍的,完全可以接受的。它被称为单身模式。 – 2012-08-02 20:33:03

+0

我知道。我是那些认为单身人士邪恶的人之一:) – Ankush 2012-08-02 20:35:43

+1

问题是很多没有经验的编程人员在单身人士风格写这样的帮手类,这有助于任何人...... – 2012-08-02 20:38:13