让一个方法在另一个方法中返回字符串是不是一种糟糕的做法

本文关键字:方法 一种 是不是 一个 另一个 返回 字符串 | 更新日期: 2024-07-27 04:49:25

因此,我正在为数据结构类中的赋值编写一些代码,我想知道使用一个方法将值返回到另一个方法是否通常是不好的做法

public void PrintLocation(MarsLander ml)
{
    for (int i = 10; i >= 0 ; i--)
    {
        Console.Write("{0} m: {1}", i * 100, WheresTheSpaceship(ml, i));
    }
    Console.WriteLine();
}
public string WheresTheSpaceship(MarsLander ml, int i)
{
    if (i == ((ml.GetHeight() % 100) + 9))
    {
        return " * 'n";
    }
    else
    {
        return "'n";
    }
}

WheresTheSpaceship方法应该返回是否打印宇宙飞船的位置(*),只是缩进到下一行,然后返回PrintLocation方法来重复循环。(这是我的第一个问题,请放轻松:)

让一个方法在另一个方法中返回字符串是不是一种糟糕的做法

通常,保持方法简短并具有特定目的是一种好的做法,否则它们可能会被滥用。(您的方法确定是否应该打印位置并格式化输出)
该方法应该返回它的目的:如果你想问是否应该打印位置,一个更合适的方法是:

public bool ShouldPrintLocation(MarsLander ml, int i)
{
    return (i == ((ml.GetHeight() % 100) + 9);
}

如果有必要,PrintLocation()将实际打印位置:

public void PrintLocation(MarsLander ml)
{
    for (int i = 10; i >= 0 ; i--)
    {
        string locationText = ShouldPrintLocation(ml, i) ? "*" : string.Empty;
        Console.WriteLine("{0} m: {1}", i * 100, locationText);
    }
    Console.WriteLine();
}

对我来说,在PrintLocation中设置输出格式更有意义,因为这种方法的目的是…打印位置,而不是进行一些逻辑/计算

如果必要的话,这还不错。它甚至被其他人实践。也许只需更改代码的方法名称,例如GetSpaceshipLocation(MarsLander ml, int i)