c# - 包装单个方法的方法

标签 c# .net api coding-style

我想我要疯了,请有人安慰我。

public class MyFile
{   
    public static byte[] ReadBinaryFile(string fileName)
    {
        return File.ReadAllBytes(fileName);
    }

    public static void WriteBinaryFile(string fileName, byte[] fileContents)
    {
        File.WriteAllBytes(fileName, fileContents);
    }
}

人们一直在我们的代码库中添加上面的代码,这肯定是错误和可怕的,我通过删除它并替换所有(或在这种情况下......)对它的引用来帮助世界带有内部代码。

这种事情有什么真正的理由吗?我会错过大局吗?我们相当YAGNI -以我们的团队为中心,这似乎与此背道而驰。我能理解这是否是更多事情的开始,但是这段代码已经休眠了好几个月,直到我今天被它绊倒。我搜索得越多,发现的就越多。

最佳答案

如所写,类/方法是垃圾。但是,我可以看到可以合法使用类似模式的情况:

public interface IFileStorage
{
    byte[] ReadBinaryFile(string fileName);
    void WriteBinaryFile(string fileName, byte[] fileContents);
}

public class LocalFileStorage : IFileStorage { ... }

public class IsolatedFileStorage : IFileStorage { ... }

public class DatabaseFileStorage : IFileStorage { ... }

换句话说,如果您想支持不同类型的存储,那么您实际上可能会包装非常简单的方法以实现通用抽象。

尽管如此,该类没有实现任何接口(interface),并且方法是静态的,因此几乎没有用。如果你试图支持上述模式,那么重构;否则,摆脱它。

关于c# - 包装单个方法的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326653/

相关文章:

c# - java 和 c# 的 SHA1 哈希计算未返回相同的结果

.net - Windows 窗体中的抗锯齿文本

api - Haskell GHC API 中的动态编译错误

c# - 启动后在 C# 中重新加载环境变量

c# - 未找到类型为 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 的构造函数

c# - 将内存中的位图图像转换为 4 维数组,如 numpy

api - 如何使用oAuth2对SPA用户进行身份验证?

windows - Windows 驱动程序使用哪个编程接口(interface)来切换事件显示

c# - 面临 ShowModalDialog 问题

c# - 如果我的类定义了一个字段,该字段的类型在其中实现了处置模式,我是否应该始终实现处置模式? C#