[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Умный рейтинг
Страницы: 1, 2, 3, 4
McLotos
Привет. Давно меня тут не было, вот вернулся с новым кодом.
Идея класса в том что есть некоторые объекты (пользователи, фирмы, песни, страницы, да в общем что угодно), которым ставятся оценки от 0 до 5. В зависимости от оценок меняется рейтинг объекта (неожиданно, правда?), но у каждой оценки есть свой вес, который рассчитывается по формуле Байеса, т.е. максимальный вес оценки равен 1 и с каждым днём он уменьшается. И это еще при том что на рейтинг объекта влияют рейтинги других объектов, например рейтинг песни будет спускаться ниже, если другие песни будут набирать больше баллов за то же время.
Кода много, поэтому дам ссылку сразу на github.
Пример там же.
Тут ругаем, подсказываем, подправляем.
Во вложении файлик на основе которого и писался скрипт

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
За весь день ни одной реакции? Неужели всё НА СТОЛЬКО ужасно? =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Bezdna
Все путешествуют , не до кода.
inpost
Я глянул мельком. Очень много говнокода, мне показалось.

             case '0': $this->elems[$pos]['zeroStarsCount']+=1;break;
case '1': $this->elems[$pos]['oneStarsCount']+=1;break;
case '2': $this->elems[$pos]['twoStarsCount']+=1;break;
case '3': $this->elems[$pos]['threeStarsCount']+=1;break;
case '4': $this->elems[$pos]['fourStarsCount']+=1;break;
case '5': $this->elems[$pos]['fiveStarsCount']+=1;break;

Почему не используешь идентификаторы? Зачем это "zeroStarsCount" ? Чем тебе не нравится:
elems[$pos][0] ? Какая-то боязнь индексных ключей? В итоге в 1 строчку делается.

          $this->elems[$elem]['oldRating'] += $this->elems[$elem]['oneStarsCount'];
$this->elems[$elem]['oldRating'] += $this->elems[$elem]['twoStarsCount']*2;
$this->elems[$elem]['oldRating'] += $this->elems[$elem]['threeStarsCount']*3;
$this->elems[$elem]['oldRating'] += $this->elems[$elem]['fourStarsCount']*4;
$this->elems[$elem]['oldRating'] += $this->elems[$elem]['fiveStarsCount']*5;

Аналогичная ситуация, к тому же можно было обойтись циклом.

А в целом, кода очень много, лень всем читать ;)

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.