代码之家  ›  专栏  ›  技术社区  ›  jpoh

命名包装器类的经验法则

  •  16
  • jpoh  · 技术社区  · 15 年前

    • 不适合RhinoMocks隔离模型的类(例如 DirectoryInfo WindowsIdentity )

    然后,我发现自己附加了一个用“W”包装的类(表示它是一个包装器),因此我以 DirectoryInfoW (相对于 DirectoryInfoWrapper NativeMethods.DuplicateTokenW .

    命名包装器类时,应该遵循什么样的经验法则?

    4 回复  |  直到 15 年前
        1
  •  20
  •   aberrant80    15 年前

    命名约定适用于您所在的团队。只要每个人都同意某个特定的约定,那么就没关系。

    不过我倾向于更详细的版本,即。 DirectoryInfoWrapper ,而不是只有一封信不向任何不熟悉代码的人解释任何事情。但那只是我。

        2
  •  3
  •   CoderTao    15 年前

    更好的例子可能是包装一个HttpRequest;定义一个IRequest,声明“这对我的应用程序很重要”,然后Request、HttpRequestWrapper、Request等将成为实现者。

    因此,总结一下,尝试使用描述性的、不过于冗长的接口名称。

        3
  •  0
  •   jpoh    15 年前

    作为旁注,我发现了一种更美观(对我来说)的包装本机方法调用的方法:

    public class NativeMethods
    {
            // made virtual so that it can be mocked - I don't really want
            // an interface for this class!
            public virtual bool RevertToSelf()
            {
                return WinApi.RevertToSelf();
            } 
    
            ...
    
            private static class WinApi
            {
                [DllImport("advapi32.dll")]
                public static extern bool RevertToSelf();
    
                ...
            }
    }
    

    不过,对于包装器类命名问题没有“好”的解决方案,我可能会按照aberrant80的建议,显式地调用我的包装器包装器。

        4
  •  0
  •   dan-O    9 年前

    如果您使用的是C++,则可以使用名称空间,然后重新使用相同的类名。例如:

    namespace WrapperNamespace
    {
        class MyClass {...};
    }
    
    namespace InternalNamespace
    {
        class MyClass {...};
    }