我有一个关于命名约定的一般问题。
如果我将数据和操作分成两个单独的类。一个具有数据元素(实体),另一个类操纵实体类。我们通常称那个操纵实体类的类是什么?
(我指的实体与任何类型的实体框架无关)
管理器?控制器?运营商?机械手?
提前致谢
答案 0 :(得分:22)
这取决于您对这些数据合同/实体所执行的操作类型。以下是我的一些惯例。让我们使用Fruit
实体的例子(我并不是要暗示这些都是静态方法,只是伪代码):
FruitRepository.Save(Fruit item);
InventoryManager.ShipFruit(Fruit[] items, string address);
FruitController.ShowDetails(string fruitId);
FruitProcessor.RemoveSeeds(Fruit[] lotsOfFruit);
FruitManipulator.PeelFruit(Fruit item);
FruitProvider.GetAllTypesOfFruit();
FruitProvider.IsInSeason(string fruitName);
FruitExporter.Save(string spreadsheet);
FruitAnalyzer.Weigh(Fruit[] items);
FruitAssembler.Combine(string speciesFile, string quantitiesFile);
FruitFactory.CreateApple(); // red delicious, McIntosh, etc
FruitBuilder.AddSeeds(5); FruitBuilder.AddStem();
这些都有些松散。主要目标是在您自己的代码库中保持一致,避免与您正在使用的技术发生冲突 - 即。如果您正在使用ASP.NET MVC,那么没有很多不是控制器的Controller类。
答案 1 :(得分:1)
我将数据和操作分成两个单独的类。
别。面对面向对象的设计,这种情况很渺茫。
答案 2 :(得分:1)
我经常和经理一起去。
答案 3 :(得分:1)
无论你喜欢什么,都要调用它,只要确保在整个项目中始终使用该名称。我们最接近的是Capability
或Receiver
,但即使这样,这些也不是你所说的。
然而
您是否有将数据与方法分离的具体原因?除非你谈论一个班级和它的工厂,否则我真的会感到惊讶,如果这种分离是真正有道理的。
答案 4 :(得分:1)
我们的理由如下:
如果逻辑使用仅一个实体,请将其移至实体本身(请参阅富域模型与贫血域模型)。
因此,大多数这些类都是实现处理多个实体的逻辑的类,因此代表协作。
不应根据责任来命名此类。诸如manager
,controller
,manipulator
等技术术语仍可用于命名约定,但重要的部分是名称的第一部分。
示例: