"PHP" / Говнокод #20491 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
$db=Yii::$app->db;

if($db->driverName == 'pgsql') {
$sql ="select a.* from report a inner join code_report b on a.id=b.report_id ";
$sql.=" inner join code c on b.code_id=c.id  where cast (c.val as integer ) {$znaki[$sign]} $value group by a.id";//pgsql
}
if($db->driverName == 'mysql') {
$sql ="select a.* from report a inner join code_report b on a.id=b.report_id ";
$sql.=" inner join code c on b.code_id=c.id  where convert(c.val, signed) {$znaki[$sign]} $value group by a.id";//mysql
}

Кандидат прислал тестовое задание

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

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

  • говно в том, что идет завязка на db, вместо использования ORM?
    Ответить
    • Говно во всем: начиная от SQL injection, заканчивая ифами для выбора БД
      Ответить
      • интересно что наниматель ожидал? на коленке-писаный 30 классов фреймворк?

        формулировка задания то же была бы интересна. если "в минимальное количество символов" и "минимальный оверхед", то тогда сложно кандидата винить.
        Ответить
        • Говно действительно во всём. Меня просто умиляет архинизкий уровень в AR. При чем, не было никаких особых требований по поводу постгрес или чего-то ещё специфического. Я вообще хз, зачем ему это проверять.
          Ответить
          • > AR

            ?

            > При чем, не было никаких особых требований по поводу постгрес или чего-то ещё специфического.

            может решил похвастаться широким спектром знаний.

            меня (как думаю и бормана) больше интересует на кой хер такая загадочная конструкция с `convert(c.val, signed) {$znaki[$sign]} $value`. такое люди от хорошей жизни не пишут.
            Ответить
            • > больше интересует на кой хер такая загадочная конструкция
              Угу.

              > {$znaki[$sign]}
              Это преобразование "less" в "<"? Или операторы тупо пронумерованы?

              > $value
              А вот за это кандидата можно дропать не глядя 🙂 Отмазки в духе "да оно же заэкранировано/профильтровано" не принимаются.
              Ответить
              • > Отмазки в духе "да оно же заэкранировано/профильтровано" не принимаются.

                но отмазка в духе "я еще не опытный" я надеюсь у тебя прокатит?

                я всегда негативно относился к бурным наездам на синтакс/этц которое тривиально в код ревью находятся/фиксятся. а вот семантику и глубже критиковать, то что сложнее разглядеть, там все дружно скромно умолкают, потому что все боятся себя идиотами показать.
                Ответить
                  • $sql = "select * from report";
                    ...
                    $sql = "select a.* from ... "

                    либо не внимательный кандидат, либо спешил.
                    Ответить
                    • Ну с $sql логика всё-таки прослеживается: если пришли кривые параметры - вываливаем весь список.
                      Ответить
                • на первый взгляд код/стиль нормальный. наличие хотя бы какого-то стиля как по мне уже плюс.

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

                  вообщем, не тормози на одном месте: пытайся из всего кода вытянуть все какие возможно качества человека, негативные и позитивные. и смотри какие из негативных может будущий опыт скомпенсировать.
                  Ответить
                • > $znaki = ['<', '=', '>'];
                  Ой, значочки какие-то интересные...
                  Ответить
            • > AR
              Да, дальше он кидает этот запрос в ar
              $query=Report::findBySql($sql);

              > меня (как думаю и бормана) больше интересует на кой хер такая загадочная конструкция с `convert(c.val, signed) {$znaki[$sign]} $value`.
              У меня к этому даже комментариев нет. Сам в замешательстве
              Ответить
        • а, так это весь проект в 10 строчек?
          тогда вопросов нет
          Ответить
  • > convert(c.val, signed)
    Мускуль не умеет в cast(c.val as integer)?
    Ответить

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

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

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


    8