Незачем упрощать этот код на C#, он и так понятен (в языках с PM можно переписать несколько иначе). Можно лишь привести к виду где лишь один вызов string.Format.
А>где condition1,2 — bool тип А>p — массив double из двух элементов;
Если это весь код, то упрощать, возможно, и не надо. Всё просто и очевидно.
Если же это часть большого куска однотипных проверок условий, который большой и растёт, то можно разово сформировать набор правил типа
List<Tuple<Predicate<bool[]>, Func<object[], string>>> formattingRules; // Да, я знаю, что читается плохо, можно свои классы ввести, будет гораздо лучше;
Здравствуйте, xvost, Вы писали:
X>Здравствуйте, andyag, Вы писали:
A>>3 раза бессмысленный else для повышения читабельности?
X>Он ни разу не бессмысленный.
Расскажите пожалуйста разницу между
if (condition1 && condition2) return string.Format("{0}", p[1]);
else if (condition2 && !condition2) return string.Format("{0}-{1}", p[1], p[0]);
else if (!condition1 && condition2) return string.Format("{0:N3}", p[1]);
else if (!condition1 && !condition2) return string.Format("x:{0:N3} y:{0:N3}", p[1], p[0]);
и
if (condition1 && condition2) return string.Format("{0}", p[1]);
if (condition2 && !condition2) return string.Format("{0}-{1}", p[1], p[0]);
if (!condition1 && condition2) return string.Format("{0:N3}", p[1]);
if (!condition1 && !condition2) return string.Format("x:{0:N3} y:{0:N3}", p[1], p[0]);
Здравствуйте, xvost, Вы писали:
X>Здравствуйте, andyag, Вы писали:
A>>Расскажите пожалуйста разницу между
X> X>Рву волосы на попе. В ночи не заметил что там return'ы
Не поверите — были те же ощущения, когда ваш решарпер ткнул меня в такой код носом
Здравствуйте, Аноним, Вы писали:
А>где condition1,2 — bool тип А>p — массив double из двух элементов;
1. Дать condition1 и condition2 человеческие имена.
2. Завести структуктурку ConditionCase с 2-мя bool-овскими полями с именами данными на 1-м шаге
3. Завести static readonly Dictionary<ConditionCase, string> _CASE_FORMAT_MAPPING и зарегестрировать в ней форматные строки
4. Переписать гребенку if-ов на string.Format(_CASE_FORMAT_MAPPING[case], p[0], p[1]), где case это ConditionCase.
5. Понять, что получилось чрезчур overdesigned и вернуться к изначальному варианту.
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, Аноним, Вы писали:
H>Незачем упрощать этот код на C#, он и так понятен (в языках с PM можно переписать несколько иначе). Можно лишь привести к виду где лишь один вызов string.Format.
Здравствуйте, _d_m_, Вы писали:
H>>Незачем упрощать этот код на C#, он и так понятен (в языках с PM можно переписать несколько иначе). Можно лишь привести к виду где лишь один вызов string.Format.
___>Как?
Завести переменную для форматной строки.
В зависимости от условий присвоить переменной то или иное значение.
Использовать форматную строку в string.Format
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, _d_m_, Вы писали:
H>>>Незачем упрощать этот код на C#, он и так понятен (в языках с PM можно переписать несколько иначе). Можно лишь привести к виду где лишь один вызов string.Format.
___>>Как?
L>Завести переменную для форматной строки. L>В зависимости от условий присвоить переменной то или иное значение. L>Использовать форматную строку в string.Format
L>
Здравствуйте, _d_m_, Вы писали:
L>>Завести переменную для форматной строки. L>>В зависимости от условий присвоить переменной то или иное значение. L>>Использовать форматную строку в string.Format
L>>
___>И где здесь PM?
L>1. Дать condition1 и condition2 человеческие имена. L>2. Завести структуктурку ConditionCase с 2-мя bool-овскими полями с именами данными на 1-м шаге L>3. Завести static readonly Dictionary<ConditionCase, string> _CASE_FORMAT_MAPPING и зарегестрировать в ней форматные строки L>4. Переписать гребенку if-ов на string.Format(_CASE_FORMAT_MAPPING[case], p[0], p[1]), где case это ConditionCase. L>5. Понять, что получилось чрезчур overdesigned и вернуться к изначальному варианту.
+1, но п.5 вряд ли будет иметь место Маленькие классы — гуд, гуд и еще раз гуд.