1. C# / Говнокод #1901

    +130.5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    if (!passFlag)
                    {
                        switch (GetTreeNodeName)
                        {
                            case "group":
                                {
                                    if (GetTreeNode.Parent.Parent.Parent.Parent.Name != "StudySchedule")
                                    {
                                        StudentCard studentCard = new StudentCard(ExploreTree.SelectedNode.Text,
                                                                                  ExploreTree.SelectedNode.Parent.Parent.
                                                                                      Text,
                                                                                  ExploreView.SelectedItems[0]);
                                        studentCard.MdiParent = this.MdiParent;
                                        studentCard.Show();
                                        break;
                                    }
                                    else
                                    {
                                        StudySchedule schedule=new StudySchedule(ExploreView.SelectedItems[0], ExploreTree.SelectedNode.Parent.Nodes);
                                        schedule.MdiParent = this.MdiParent;
                                        schedule.Show();
                                        break;
                                    }
                                }

    Это мой говнокод, не знаю как строчку if (GetTreeNode.Parent.Parent.Parent.Parent .Name != "StudySchedule")
    написать по-нормальному)))

    Запостил: FofanovIS, 26 Сентября 2009

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

    • -1 за баян.
      http://govnokod.ru/1895
      Ответить
      • Да не надо говорить, баян не баян. А если новый человек запостил?
        Что ему весь архив сайта просматривать?
        Ответить
    • Это баян синтаксически, но не семантически. С точки зрения семантики, вполне возможно, здесь всё нормально...
      Ответить
    • аналогично, -1 за баян
      (http://govnokod.ru/1895)
      Ответить
    • В Си Шарпе не разбираюсь, но, может, можно заранее сохранить ссылку на предка?
      Если нельзя, то думаю, этот способ самый быстрый, чтобы достичь предка, хотя и выглядит смешно.
      Повторюсь, в Си Шарпе не разбираюсь.
      Ответить
      • Это говнокод хотя бы потому что не стоит вообще лезть в элементы интерфейса, с помощью парентов или еще каким-нибудь способом.
        А нужно почитать книжку про ООП и подумать как замапить объект на GUI, и те данные которые здесь получаются таким извращённым способом, получить из объекта.

        ps. как постер говнокода #1895, минус не поставлю :) потому что очевидно, что автор этого говна немного недопонимает сути.
        Ответить
        • мапить ради одного случая?
          Ответить
          • Мапить ради одного, двух и всех остальных случаев.
            Чтобы не было говна.
            Я больше чем уверен, что в этом же приложении куча подобных конструкций в коде, а это значит что использование человеческой объектной модели избавит от многих проблем.
            Ответить
            • Дайте ссылку на почитать про это подробнее, пожалуйста)))
              Ответить
              • Ну про привязку данных существует много всякой литературы, фреймворков и прочего.
                Но начать, в общем, можно отсюдова
                http://msdn.microsoft.com/en-us/library/aa984099(VS.71).aspx
                Ответить
    • А у тринода случаем нет свойства Path?
      Ответить
    • Если строка GetTreeNode.Parent.Parent.Parent.Parent. Name действительно является свойством (признаком) объекта GetTreeNode, то его следует и сделать свойством (property) и вызывать что-то типа GetTreeNode.GrandfatherName.
      Ответить
      • Да, точно! Можно наследоваться и добавить метод Grandfather, который бы возвращал Parent.Parent от контрола. Тогда можно переписать
        GetTreeNode.Parent.Parent.Parent.Parent. Name =>
        GetTreeNode.Grandfather.Grandfather.Name !

        Вот экономия! ))))))))
        Ответить
    • public static TreeNode GetXParent(TreeNode current, int parent){
      if(parent==0 || current.Parent==null){
      return current;
      }
      return GetXParent(current.Parent,i-1);
      }
      Ответить

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