1. Куча / Говнокод #12697

    +125

    1. 1
    2. 2
    $ find . -type f -name '*.asp' -exec grep -nHi 'select \*' {} \; | wc -l
    2160

    teh drama :(

    Запостил: wvxvw, 06 Марта 2013

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

    • "select * что быть форвард компатибл с будущими структурами таблиц." - раз такое дело на php проекте слышал.
      Ответить
      • Главное при этом не додуматься обращаться к полям по индексам... select * и обращение по индексам = море счастья на будущих версиях таблиц.

        А по именам - ну чтож, работать будет. И действительно forward compatible (если, конечно, не будут удалять/переименовывать поля, но от этого уже ничто не спасет). Впрочем, перечисление нужных полей вместо звезды ровно в той же степени forward compatible ;)
        Ответить
        • Там таблиц как раз на порядок меньше, чем этих селектов. В таблицах - треш, угар и содомия. Там просто нереальное количество мусора, на столько много, что просто тяжело найти полезную информацию. А я все сижу и строю планы о том, как бы настроить профайлер, чтобы он отслеживал к каким полям нет обращений, но две тыщи таких селектов мне просто не побороть, даже за год.

          Что интересно, весь этот бред писался одним человеком, но на протяжении почти десяти лет. И за столько времени, человеку не пришло в голову отркыть даже справку, не говоря уже о книжке.
          Ответить
          • К концу может быть и пришло, но по тем же соображениям (1800 селектов мне просто не побороть) он забил и писал и дальше в том же стиле.
            Ответить
          • P.S. А насчет профайлера - ну можно попробовать переименовать во всем проекте mysql_query (судя по стилю и 10 летней давности там всяко юзается именно этот модуль) в checked_mysql_query, логирующий текст запроса и номер строки в которой оно вызвано, а mysql_fetch_xxx на checked_mysql_fetch_xxx, из которой возвращать объект, у которого перекрыт оператор [] (PHP вроде бы позволяет так делать), и логировать обращения к нему...
            Ответить
            • Примерно вот так: https://ideone.com/hwbn5I
              Ответить
            • Это ж ASP... там это выглядит примерно так:
              SQL = "select * from area_tbl ORDER BY area_order"
              rs.Open SQL ,cn ,3 ,3
              if not rs.EOF then
              rs.PageSize = 30
              rs.CacheSize = rs.PageSize
              NumRows = 0
              CurrentPage = request("pageid")
              IF request("pageid") = "" Then  CurrentPage = 1 'start position

              Это все как-то через АДОДБ работает, хз вобщем, я с таким впервые в жизни столкнулся. ПХП там не много, и восновном вордперсовское говно.

              EDIT:
              Гы. сейчас от нечего делать глянул, а там дальше просто:
              rs.Close

              А в таблице 200000 записей примерно. Это человек так первую запись выбрал :(
              Ответить
      • Кстати, в Вордпресе везде так... я таким же способом обнаружил (часть проекта на ПХП написана). Какой в этом смысл - я не разбирался, слава богу хоть этим заниматься в обозримом будущем не прийдется.
        Ответить
        • Когда закончите с этим проектом - приходите к нам, будем ждать.
          Ответить
          • Будете у нас на Колыме..
            Ответить
          • Кстати, а вам персистент колонка, с посчитаным средним арифметическим от остальных полей не нужна? Есть в двух вариантах, varchar(50) и int?
            Сегодня обратил внимание на то как данные в эту колонку попадают: сидит девочка, набирает данные на калькуляторе из таблицы (которую она только загрузила из админки), потом копирует результат в соответствующее поле в таблице - и сабмит. Ручной работы колонка! Не просто так.
            Ответить

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