Здравствуйте, IT, Вы писали:
IT>Здравствуйте, __kot2, Вы писали:
__>>а каким вы образом будете тестировать гигантский switch где сгруппировано всю кучками? будете писать отдельный тест для каждого значения case? для одного из класса? или все-таки для каждого класса таких значений?
IT>а каким вы образом будете тестировать гигантский цикл? будуте писать отдельный тест для каждой итерации?
тут, разумеется, понадобится два теста. на то, что метод вызывается нужное число и раз и корректность работы метода непосредственно
__>>тесты говнокода всегда пытаются описать что говнокод делает, когда тест нормального кода описывает что код должен делать
IT>Глубокая мысль. Если её упростить, то получится так: дважды два равно четыре, когда трижды три равно девять.
нет. просто когда понимаешь, что потом это еще и тестировать надо, то стараешься писать совсем по другому
__>>я ничего про ветку не понял. вот, допустим, я что-то добавил-поменял в выражениях. как мне удостовериться, что ничего старого не поломалось, а новое работает?
IT>Ты опять про тесты? Давай может вернёмся к тому как ты сейчас лихо из 250 строк предложенного кода сделаешь 10?
я уже привел свое решение
public static void for_every_subexpression_do(this Expression expr, Func<Expression,bool> func)
{
for_each(subexpr : expr.sub_expressions())
{
Visit(subexpr, func);
func(subexpr);
}
}
наверное, правильнее будет вставить
Visit(expr, func);
на самый верх, но это зависит так же от того, что мы понимаем под подвыражением
6 строчек кода. 7 если разделитесь для красоты добавить
код сразу становится легко тестируемым и для того, чтобы его понять, не нужно 20 минут гаданий