-1

ToBeMum、、、の 3 つのクラスがNewMumありExperiencedMumsます。これらのクラスには、同じことを行う異なるメソッドがありますが、パラメーターが異なります。3 つのクラスすべてでコピー/貼り付けを避けるためにコードを再構築するにはどうすればよいですか? 例えば:

新しいお母さん:

public List<Question> GetMotherActualDayCareAge()
        {

            List<QuestionInfo> mumsHabits;
            var answers = Answers.GetAnswers;

            string answerValue = string.Empty;

            var oneA = from a in answers
                       where a.Questionid == "Q49d"
                       select new QuestionInfo { questionId = a.Questionid, userId = a.UserId };

            var oneB = from a in answers
                       where a.Questionid == "Q65d"
                       select new QuestionInfo { questionId = a.Questionid, userId = a.UserId };

            var temp = oneA.Union(oneB).ToList();

            mumsHabits = temp.Intersect(mothers, new UserIdEqualityComparer()).ToList();

            return mumsHabits;
        }

経験豊富なお母さん

public List<QuestionInfo> GetMotherActualDayCareAge()
        {
            List<QuestionInfo> mumsHabits;

            var answers = Answers.GetAnswers;

            string answerValue = string.Empty;

            var oneA = from a in answers
                       where a.Questionid == "Q49c"
                       select new QuestionInfo { questionId = a.Questionid, userId = a.UserId };

            var oneB = from a in answers
                       where a.Questionid == "Q65c"
                       select new QuestionInfo { questionId = a.Questionid, userId = a.UserId };

            var temp = oneA.Union(oneB).ToList();

            mumsHabits = temp.Intersect(mothers, new UserIdEqualityComparer()).ToList();

            return mumsHabits;
        }
4

3 に答える 3

0

以下の一般的な方法を抽出します。

var oneA = from a in answers
                       where a.Questionid == "Q49d"
                       select new QuestionInfo { questionId = a.Questionid, userId = a.UserId };

            var oneB = from a in answers
                       where a.Questionid == "Q65d"
                       select new QuestionInfo { questionId = a.Questionid, userId = a.UserId };

そして、コードにハードコーディングする代わりに、QuestionIds をパラメーターとして渡します。この新しいメソッドは、既存のメソッドの両方から呼び出すことができ、コードの重複を避けることができます

于 2013-07-04T05:59:06.747 に答える