小编sha*_*sen的帖子

什么时候C#类没有方法设计不好?

什么时候没有方法设计不好?

从我所读到的,没有方法(即没有行为)(AKA哑类)的类是糟糕的设计,数据传输对象(DTO)除外.这是因为DTO的目的是减少将数据传输到远程接口(本地DTO)时的开销.关于DTO和普通老类对象(POCO VS DTO)似乎存在一些争论,并且对贫血设计(贫血模型领域)的争论也在进一步展开.

那么,在有问题的哑类是本地对象(即不是用于传输数据)的情况下,你通常更好地重构哑类的属性并将它们实现为集合(例如Dictionary)?引用Bill K(如何为具有可扩展属性的资源编写DAO),"如果您使用了对象,请使用哈希表.对于属性名称,使用键,对于属性值,请使用哈希表中的值."

我在设计这个哑课时的想法是构图.另一个类由多个哑类对象(即哑类对象的集合)组成.我的想法错了吗?如果我要将哑类实现为集合,我将拥有一组属性的集合.

我对收藏品等收藏品的理解也很差.是否有一些指导原则来平衡这些明显的糟糕设计选择?

一如既往,任何见解或指导都值得赞赏.

关心香农

c# oop class-design

8
推荐指数
1
解决办法
1631
查看次数

使用 LINQ 计算百分位数

全部,

回顾了 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)

c# linq percentile

5
推荐指数
1
解决办法
7150
查看次数

标签 统计

c# ×2

class-design ×1

linq ×1

oop ×1

percentile ×1