开发者

How to Extract Properties for Refactoring

I have this property

public List<PointK> LineList
{get;set;}

Where PointK consists of the following structure:

string Mark{get;set;}
double X{get;set;}
doible Y{get;set;}

Now, I have the following code:

   private static Dictionary<string , double > GetY(List<PointK> points)
    {
        var invertedDictResult = new Dictionary<string, double>();
        foreach (var point in points)
        {
            if (!invertedDictResult.ContainsKey(point.Mark))
            {
                invertedDictResult.Add(point .Mark, Math.开发者_如何学CRound(point.Y, 4));
            }

        }

        return invertedDictResult;
    }


   private static Dictionary<string , double > GetX(List<PointK> points)
    {
        var invertedDictResult = new Dictionary<string, double>();
        foreach (var point in points)
        {
            if (!invertedDictResult.ContainsKey(point.Mark))
            {
                invertedDictResult.Add(point .Mark, Math.Round(point.X, 4));
            }

        }

        return invertedDictResult;
    }

How to restructure the above code?


You could use

 private static Dictionary<string , double > GetCoordinate
                    (List<PointK> points, Func<Point, double> selector) 

    { 
        var invertedDictResult = new Dictionary<string, double>(); 
        foreach (var point in points) 
        { 
            if (!invertedDictResult.ContainsKey(point.Mark)) 
            { 
                invertedDictResult.Add(point.Mark, Math.Round(selector(point), 4)); 
            } 

        } 

        return invertedDictResult; 
    } 

and reduce your methods to

 private static Dictionary<string , double > GetX(List<PointK> points) 
    {         
        return GetCoordinate(points, p => p.X); 
    } 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜