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

    +113

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    StringBuilder script = new StringBuilder();
    script.Append("<script type=text/javascript>alert('Данные не сохранены');</");
    script.Append("script>");
    
    Page.ClientScript.RegisterStartupScript(this.GetType(), "catchScript", script.ToString());

    Поддерживаю проект от других разработчиков.
    Если честно казалось бы придраться не к чему, все будет работать - но почему нужно было делать такой разрыв строки и посреди тега? Это меня в ступор вгоняет. Совпадений по проекту 83 таких.

    Запостил: sergey_sh, 18 Апреля 2012

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

    • Похоже, разрыв по 80 символам в строке исходного кода. Хотя нет, 5 строка еще длиннее, а еще ж отступы... загадка.
      Ответить
      • > ж отступы
        прочитал как ЖОПСТУПЫ
        Ответить
      • кста, конец первого Append'a приходится на 78-ой символ. Вторая строка не длиннее, на сайте шрифт не моноширинный. Вообще по проекту там строк и больше 80 символом хватает.

        я первый раз же еще не заметил, вставил что-то между Append'ами что-то и приехали..
        Ответить
      • да может копипастили откуда-то бездумно
        Ответить
    • Это известный баг Visual Studio 2003/2005. Когда в коде программы встречался текст "</script>", то это напрочь убивало подсветку синтаксиса в этом файле и переставал работать IntelliSense. А если этот текст написать в коде aspx страницы и открыть ее на редактирование в режиме проектирования (Design Mode), то Visual Studio падала с Unhandled Exception. Очевидно, что программист выкручивался как мог, хотя ему ничего не мешало использовать препроцессор или обычную статическую функцию для использования "нехорошего" слова, например:
      public static string CloseScript()
      {
        return "</" + "script"  + ">";
      }
      Ответить
      • про это не знал, если честно. спасибо вам. код правда был в *.aspx.cs, но все равно - хоть как возможная причина. правда не очень в таком случае, что проекту около года, а он писался в 2005-ой студии. я надеялся хотя бы на 2008-ую. (правда .Net для проекта был включен 3.5 - такое можно сделать в 2005-ой?)
        Ответить
      • МАЙКРОСОФТВИЗУАЛСТУДИОПРОБЛЕМЫ
        Ответить
    • Это так же может быть связано с такой проблемой - http://stackoverflow.com/questions/5476374/why-escaping-in-javascript-script смотрим http://stackoverflow.com/a/5476461/899937
      Ответить
      • ну это не совсем то, хотя да, интересный случай тоже. этот код же генерится на сервере и script.ToString() отдает склееную строку "<script type=text/javascript>alert('Данные не сохранены');</script>"
        Ответить
        • Про сервер конечно понятно, но это хоть какое-то объяснение =) Если в версию с багом студии не очень верится
          Ответить

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