You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写高效的Getters和Setters?优化多对象三整数最值计算代码

优化Calc类代码并扩展统计功能方案

嘿,针对你的问题,我分两部分来给出解决方案:

一、优化现有代码的冗余与低效问题

你的现有代码主要存在几个冗余点:

  • 手动编写私有字段和对应的属性,其实可以用C#的自动属性简化
  • getLargest方法需要传入三个参数,但类本身已经存储了Num1、Num2、Num3,完全没必要重复传参,既冗余又容易出错
  • Ans字段的属性也可以简化为自动属性

优化后的代码如下:

class Calc
{
    // 用自动属性替代手动编写的私有字段+属性,代码更简洁
    public int Num1 { get; set; }
    public int Num2 { get; set; }
    public int Num3 { get; set; }
    public int Largest { get; private set; } // 只对外暴露get,避免外部随意修改结果

    // 直接使用类内部的三个数值计算最大值,无需传参
    public void GetLargest()
    {
        Largest = Math.Max(Math.Max(Num1, Num2), Num3);
    }
}

这样优化后,调用时只需要先给Num1、Num2、Num3赋值,再调用GetLargest()就能拿到最大值,代码更简洁,也避免了参数传递的冗余。

二、不使用数组同时计算最大值、最小值和平均值

如果不能使用数组,我们依然可以通过嵌套调用Math.Max/Math.Min来计算最值,平均值则直接通过三个数的和除以3(注意用浮点数除法避免整数截断)。我们可以给类新增对应的属性来存储这些统计结果,同时把方法改个更贴切的名字,比如CalculateStats。

实现代码如下:

class Calc
{
    public int Num1 { get; set; }
    public int Num2 { get; set; }
    public int Num3 { get; set; }
    
    // 新增统计结果属性,只允许内部赋值
    public int Max { get; private set; }
    public int Min { get; private set; }
    public double Average { get; private set; }

    public void CalculateStats()
    {
        // 计算最大值:嵌套调用Math.Max
        Max = Math.Max(Math.Max(Num1, Num2), Num3);
        // 计算最小值:嵌套调用Math.Min
        Min = Math.Min(Math.Min(Num1, Num2), Num3);
        // 计算平均值:用3.0确保浮点数除法,避免整数截断
        Average = (Num1 + Num2 + Num3) / 3.0;
    }
}

调用示例:

var calc = new Calc();
calc.Num1 = 10;
calc.Num2 = 25;
calc.Num3 = 18;
calc.CalculateStats();

Console.WriteLine($"最大值:{calc.Max}");
Console.WriteLine($"最小值:{calc.Min}");
Console.WriteLine($"平均值:{calc.Average:F2}"); // 保留两位小数输出

这个方案完全不需要数组,通过直接操作三个数值完成所有统计计算,代码清晰高效,同时结果通过属性暴露,调用起来非常方便。

内容的提问来源于stack exchange,提问作者battlecore64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:32:29