求问一道 C#笔试题,想知道最好的解答是什么

richards64:题目如下:

这是一段用于计算多个几何形状面积之和的程序

  1. 指出程序段存在的不妥之处,并重构代码
  2. 在 1 的基础上增加一种可计算的几何形状类型三角形,其面积为 底×高×1/2
public class Shape
{
    public int Type { get; set; }
    public int Radius { get; set; }
    public int Width { get; set; }
    public int Length { get; set; }
}

public class ShapeCalculator
{
    public static double CalculateTotalArea(List<Shape> shapes)
    {
        double totalArea = 0;
        if (shapes != null && shapes.Count() > 0)
        {
            foreach (Shape shape in shapes)
            {
                if (shape.Type == 1)
                {
                    totalArea += Math.PI * shape.Radius * shape.Radius;
                }
                else if (shape.Type == 2)
                {
                    totalArea += shape.Length * shape.Width;
                }
            }
        }
        return totalArea;
    }
}

我的回答是这样的:

interface ICalc
{
    double GetAera();
}

class Circle : ICalc
{
    public int Radius { get; set; }

    public double GetAera()
    {
        return Math.PI * Radius * Radius;
    }
}

class Rectangle : ICalc
{
    public int Length { get; set; }
    public int Width { get; set; }

    public double GetAera()
    {
        return Length * Width;
    }
}

class Triangle : ICalc
{
    public int Bottom { get; set; }
    public int Height { get; set; }

    public double GetAera()
    {
        return Bottom * Height * 0.5;
    }
}

class ShapeCalculator
{
    public static double CalculateTotalArea(List<ICalc> shapes)
    {
        double totalArea = 0;
        if (shapes != null)
        {
            totalArea = shapes.Sum(shape => shape.GetAera());
        }
        return totalArea;
    }
}

凭我的水平和理解能力就只有写到这种程度了……有什么更好的写法吗?

一键拷贝常用动画效果 CSS 代码

jeffjade:CSSFX,一个 CSS 动效相关的网站: https://cssfx.lovejade.cn/ 。她集合 Web 开发中常用的动画效果,如鼠标悬停、输入框获取焦点、加载、以及其他动画;不仅有展示效果,并提供一键拷贝至剪切板,以便您可以在自己的项目中使用。 备注:这个项目是基于 GitHub 的一个项目( CSSFX ?) fork 而来,…

请问小程序换量的技术实现是怎样的?

rouwann:像阿拉丁上面提供小程序换量的信息和联系方式,所以是针对特定的小程序,代码里做跳转和数据上报吗?有没有第三方的联盟 sdk 可以解决换量问题?本人产品经理,望指教

密码定期修改

Kumius:请教大家一个问题:对一个应用系统 它号称自己的内在逻辑要求管理员每季度修改一次密码,并且至少与前三次密码不同。作为‘审查’人员,该如何验证该系统实现了此功能呢? 密码与前三次不同比较好检查,但如何判断每隔一段时间就要求修改密码呢?总不能修改系统时间来验证吧。。Aliencn:要么就代码审计。要么就修改系统时间来验证。

有没有写好接口文档就生成接口代码的工具?

fanyingmao:要求写好接口文档,然后生成各部分代码并对出入参数做检查,然后修改接口文档也会帮忙只修改对应部分的代码,这样开发只有写对出入参数实现部分就可以了,少了很多复制粘贴,文件间跳转修改的工作同时减少当中出错的可能。 还有针对 node 有定义好数据库表然后生成 model 代码的工具吗?

写文档比写代码难多了

heboy:最近计划开源一个项目,功能很简单总共就 3 个命令加一些扩展,结果文档写了两个月还是不满意,删了写写了删。真的比写代码还纠结wysnylc:文字的历史比代码可久多了 rimutuyuan:写文档还好,写解决方案才费劲,想起了被 800 字支配的恐惧