Информация об изменениях

Сообщение Re[9]: Функции должны быть компактными от 26.04.2016 19:20

Изменено 26.04.2016 19:39 __kot2

Здравствуйте, IT, Вы писали:
__>>правда, мне непонятно что делает эта ф-ия. упрощает выражения? обьясните на пальцах, пожалста
IT>Это типа визитора, только без создания сотен классов.

IT>Теперь всё же мне хочется получить ответ на предыдущий вопрос. Есть метод с хорошей архитектурой, который после устранения копипасты и добавления новых типов выражений составляет 250 строк. Как из него сделать хотя бы строк 10?

как я и говорю, мне непонятно, что конкретно он делает
если т.з. на этот метод звучит как "типа визитора, только без создания сотен классов" то я бы переписал его так:

public static void Visit(this Expression expr, Func<Expression,bool> func)
{
    DontCreateHundredClasses();
}

это полностью удовлетворяют заданию и, как видите, можно и в одну строчку уложить. в принципе, я даже не уверен что и она нужна

вообще, обычно, чтобы убедиться что этот код д-но удовлетворяет т.з., люди сначала пишут тесты, а потом соотв-но запускают и проверяют. покажите мне тесты на этот класс, а я попробую догадаться, что он делает на самом деле

(добавил позже)
ааа, я, похоже начинаю догадываться. то есть мы хотим просто пройти по всем подвыражения одного выражения и вызывать лямбду? я прав?
ну это просто

public static void Visit(this Expression expr, Func<Expression,bool> func)
{
    for_each(subexpr : expr.sub_expressions())
      func(subexpr);
}
Здравствуйте, IT, Вы писали:
__>>правда, мне непонятно что делает эта ф-ия. упрощает выражения? обьясните на пальцах, пожалста
IT>Это типа визитора, только без создания сотен классов.

IT>Теперь всё же мне хочется получить ответ на предыдущий вопрос. Есть метод с хорошей архитектурой, который после устранения копипасты и добавления новых типов выражений составляет 250 строк. Как из него сделать хотя бы строк 10?

как я и говорю, мне непонятно, что конкретно он делает
если т.з. на этот метод звучит как "типа визитора, только без создания сотен классов" то я бы переписал его так:

public static void Visit(this Expression expr, Func<Expression,bool> func)
{
    DontCreateHundredClasses();
}

это полностью удовлетворяют заданию и, как видите, можно и в одну строчку уложить. в принципе, я даже не уверен что и она нужна

вообще, обычно, чтобы убедиться что этот код д-но удовлетворяет т.з., люди сначала пишут тесты, а потом соотв-но запускают и проверяют. покажите мне тесты на этот класс, а я попробую догадаться, что он делает на самом деле

(добавил позже)
ааа, я, похоже начинаю догадываться. то есть мы хотим просто пройти по всем подвыражения одного выражения и вызывать лямбду? я прав?
ну это просто

public static void Visit(this Expression expr, Func<Expression,bool> func)
{
    for_each(subexpr : expr.sub_expressions())
        {
          Visit(subexpr, func);
      func(subexpr);
        }
}