5
避免使用命名空间进行Smurf命名类的问题
我从这里取消了“蓝精灵命名”一词(21号)。为了省去不熟悉的人的麻烦,Smurf命名是为一堆相关的类,变量等添加通用前缀的行为,因此您最终将“ a SmurfAccountView传递SmurfAccountDTO给SmurfAccountController”,等等。 我通常听到的解决方案是创建一个smurf名称空间并删除smurf前缀。通常,这对我来说很好,但是我遇到了两个问题。 我正在与一个图书馆一起Configuration上课。它可以被调用,WartmongerConfiguration但是在Wartmonger命名空间中,因此它被称为Configuration。我同样有一个Configuration可以调用的类SmurfConfiguration,但是它在Smurf命名空间中,因此是多余的。我的代码中有些地方Smurf.Configuration出现在旁边,Wartmonger.Configuration并键入完全限定的名称比较笨拙,并且使代码的可读性较差。处理一个SmurfConfigurationand 会更好(如果这是我的代码而不是一个库)WartmongerConfiguration。 我Service在Smurf命名空间中有一个可能称为的类SmurfService。Service是运行Smurf作业的复杂Smurf库顶部的外观。SmurfService似乎是一个更好的名字,因为Service没有Smurf前缀是非常通用的。我可以接受的是,这SmurfService已经是一个通用且无用的名称,而去除蓝精灵只是使这一点更加明显。但是它本来可以命名为Runner,Launcher等等,但对我来说仍然会“感觉更好”,SmurfLauncher因为我不知道a的Launcher作用,但是我知道a的SmurfLauncher作用。您可能会争辩说a的Smurf.Launcher行为应该与a的行为一样明显Smurf.SmurfLauncher,但我可以看到`Smurf.Launcher是某种与安装相关的类,而不是启动smurfs的类。 如果有一种开放和封闭的方式来处理这两种情况,那将是很好的。如果不是,有什么常用的方法可以减轻他们的烦恼?