1. JavaScript / Говнокод #7491

    +147

    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
    25. 25
    26. 26
    $(document).ready(function() {
        // get elements only once instead of every Interval
        var clock = {};
        clock.seconds = $('.clock_seconds');
        clock.minutes = $('.clock_minutes');
        clock.hours = $('.clock_hours');
        
        setInterval( function() {
            // get time
            var date = new Date();
            var seconds = date.getSeconds();
            var mins = date.getMinutes();
            var hours = date.getHours();
    
            // count degrees
            var seconds_degree = seconds * 6; // 60 secs * 6 deg = 360 deg
            var minutes_degree = mins * 6; // 60 mins * 6 deg = 360 deg
            var hours_degree = hours * 30 + (mins / 2); // 12 hours * 30 = 360 deg
    
            // apply transform
            clock.seconds.css({"-moz-transform" : 'rotate('+seconds_degree+'deg)'});
            clock.minutes.css({"-moz-transform" : 'rotate('+minutes_degree+'deg)'});
            clock.hours.css({"-moz-transform" : 'rotate('+hours_degree+'deg)'});
    
        }, 1000 );
    });

    Часы на CSS3, под FireFox 5.

    Запостил: aTei, 08 Августа 2011

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

    • А в чем проблема?
      Ответить
    • покажите, как лучше
      Ответить
    • Мне кажется, что код можно сделать лучше, но идей уже нету. Отдал на оценку мастеров, присутствующих тут.
      Ответить
      • Вы правы, можно сделать лучше:
        // apply transform
                clock.seconds.css({"-o-transform" : 'rotate('+seconds_degree+'deg)'});
                clock.minutes.css({"-o-transform" : 'rotate('+minutes_degree+'deg)'});
                clock.hours.css({"-o-transform" : 'rotate('+hours_degree+'deg)'});
        Ответить
      • ОТЦЕНИТЕ КОД!!!!!
        Ответить
        • ОТЦЕНИТЕ МОЙ ПАТЧ К КОДУ!!!11
          Ответить
          • Не ожидал что и тут глупостями занимаются. Извините что побеспокоил.
            Ответить
            • Чем мой кусок кода хуже Вашего? И в чём здесь глупость?
              Ответить
            • Вас уже прогнали откуда-то?
              Ответить
              • нет. Я имел в виду прочие интернеты с таким же поведением.
                Ответить
      • Попробую угадать, почему столько минусов. Вероятно, Ваше предложение показалось кому-то похожим на просьбу решить домашнее задание в Ответах Mail.ru.

        Как написано в заголовке, здесь приветствуется код, над которым можно посмеяться. Варианты такого кода:
        1. Работает с глюками.
        2. Работает нормально, но жутко неоптимален.

        Попробуем найти в этом коде что-нибудь интересное:
        1. Обоснованность применения jQuery. Это священная война, дисциплина специальной олимпиады, в которой выигравших не бывает, поэтому останавливаться на этом пункте не будем.
        2. class vs id. Если в документе будет несколько часов, то тикать они все будут синхронно. А если нам нужны часы для нескольких поясов, то придётся либо рисовать часовую стрелку для каждого пояса, либо менять class на id.
        3. Получение текущего времени. Дата/время — это вообще отдельная тема ГК.
        4. Вычисление углов. Квант движения секундной и минутной стрелки здесь — 6 градусов, а часовой — полградуса. Здесь есть, о чём поспорить.
        5. Нестандартные свойства типа "-moz-transform". Когда вижу сайты, заточенные под один браузер, так и хочется с автором сделать что-то нехорошее. Заставлять юзера держать четыре браузера из-за того, что на одном сайте используется -moz-, на другом -webkit-, на третьем -o-, на четвёртом progid:DXImageTransform — синдром маркиза заграничного. Нормальные сайты работают со всеми браузерами, а поскольку ради пары сайтов, требующих установки специального браузера, юзеры заморачиваться не будут, сайт потеряет аудиторию.
        6. Инициализация по загрузке документа. Если динамически появляющиеся/исчезающие часики не нужны, то это нормально.
        7. Безымянные функции. Если подводить часы вручную не нужно, то это нормально.
        8. Нет HTML-кода. «Вкусности» могут быть и в нём.

        Вроде всё, больше высасывать нечего.
        Ответить
        • > рисовать часовую стрелку
          и минутную же

          а углы можно было бы из комментариев в выражения перевести
          Ответить
          • > и минутную же
            Да, есть территории, время в которых отличается от теоретического пояса на 30 минут. А в Непале время от индийского отличается на 15 минут, поэтому индийский программист всегда найдёт занятие. Хотя бы стрелки рисовать.

            > а углы можно было бы из комментариев в выражения перевести
            Literate programming by Donald Knuth?
            Ответить
            • там у него в комментариях какие-то говноуравнения, их надо было выразить и записать по-человечьи
              тут даже не кнут, а читаемость, чтобы не вспоминать конструкцию шкал архаичных хронометров
              Ответить
    • видимо, какой-то мудак где-то написал, что мы здесь сидим, нихуя не делаем и оцениваем код
      нам что, заняться больше нечем?
      Ответить

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