Си диез / Говнокод #17217 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
private bool CompareLvlCats(string[] cat,List<string[]> cats, int lvl)
{
    if (lvl == 1) return cats.Find(x => x[0] == cat[0] && (x[1] != cat[1] ||x[1]!="")) != null;
    if (lvl == 2) return cats.Find(x => x[0] == cat[0] && x[1] == cat[1] && (x[2] != cat[2] || x[2] != "")) != null;
    if (lvl == 3) return cats.Find(x => x[0] == cat[0] && x[1] == cat[1] && x[2] == cat[2] && (x[3] != cat[3] || x[3] != "")) != null;
    if (lvl == 4) return cats.Find(x => x[0] == cat[0] && x[1] == cat[1] && x[2] == cat[2] && x[3] == cat[3] && (x[4] != cat[4] || x[4] != "")) != null;
    if (lvl == 5) return cats.Find(x => x[0] == cat[0] && x[1] == cat[1] && x[2] == cat[2] && x[3] == cat[3] && x[4] == cat[4] && (x[5] != cat[5] || x[5] != "")) != null;
    if (lvl == 6) return false;
    return false;
}

Здесь мы идём снова.

Запостил: pushistayapodmyshka pushistayapodmyshka, (Updated )

Комментарии (2) RSS

  • Ясненько. Очень говнокодисто. Хм, а если передать (строим куб параметров, вызвающих исключения, например)

    1) null, null
    2) null, new List<string[]>(null)
    3) null, new List<string[]>(new string[0]{ })
    4) null, new List<string[]>(new string[]{ "1" }, 1)

    1) new string[] { "1" }, null
    2) new string[] { "1" }, new List<string[]>(null)
    3) new string[] { "1" }, new List<string[]>(new string[0]{ })
    4) new string[] { "1" }, new List<string[]>(new string[]{ "1" }), 1

    ну и различные сочетания для массивов от 0 элементов, до 4 (при 5 вылетать не будет)

    то говнокод, в общем-то, будет падать, потому что етьс априорная информация:

    1)число элементов в массивах, находящихся в списке массивов - не меньше (строго больше) уровня массива (равно +1)
    2)не допускаютя null элементы массива, null параметры

    У меня разрыв шаблона
    Ответить
  • А в простом цикле нельзя посмотреть эквивалентный вариант? Что то вроде old style govnokod (for loops)
    private bool CompareLvlCats(string[] cat,List<string[]> cats, int lvl)
    {
      if (cat == null || cats == null || cats.Length <= lvl) 
        throw Exception(Resources.CompareLvlCats_NotEnougthParams);
      for(int =0;i<lvl-1;i++)
      {
        if (cats[i] != cat[i]) return false;
      }
      return cats[lvl] != cat[lvl] || cats[lvl] != string.Empty;
    }
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8