什么时候没有方法设计不好?
从我所读到的,没有方法(即没有行为)(AKA哑类)的类是糟糕的设计,数据传输对象(DTO)除外.这是因为DTO的目的是减少将数据传输到远程接口(本地DTO)时的开销.关于DTO和普通老类对象(POCO VS DTO)似乎存在一些争论,并且对贫血设计(贫血模型领域)的争论也在进一步展开.
那么,在有问题的哑类是本地对象(即不是用于传输数据)的情况下,你通常更好地重构哑类的属性并将它们实现为集合(例如Dictionary)?引用Bill K(如何为具有可扩展属性的资源编写DAO),"如果您使用了对象,请使用哈希表.对于属性名称,使用键,对于属性值,请使用哈希表中的值."
我在设计这个哑课时的想法是构图.另一个类由多个哑类对象(即哑类对象的集合)组成.我的想法错了吗?如果我要将哑类实现为集合,我将拥有一组属性的集合.
我对收藏品等收藏品的理解也很差.是否有一些指导原则来平衡这些明显的糟糕设计选择?
一如既往,任何见解或指导都值得赞赏.
关心香农
全部,
回顾了 StackOverflow 和更广泛的互联网后,我仍在努力使用 LINQ有效地计算百分位数。
其中百分位数是统计中使用的一种度量,表示一组观察中给定百分比的观察低于该值。下面的示例尝试将值列表转换为数组,其中每个(唯一的)值都用关联的百分位数表示。列表的 min() 和 max() 必须是返回数组百分位数的 0% 和 100%。
使用LINQPad,以下代码生成所需的输出 VP[]:

这可以解释为: - 在 0% 时,最小值为 1 - 在 100% 时,最大值为 3 - 在最小值和最大值之间的 50% 时,值为 2
void Main()
{
var list = new List<double> {1,2,3};
double denominator = list.Count - 1;
var answer = list.Select(x => new VP
{
Value = x,
Percentile = list.Count(y => x > y) / denominator
})
//.GroupBy(grp => grp.Value) --> commented out until …Run Code Online (Sandbox Code Playgroud)