Я разрабатываю веб-сайт и хочу хорошую систему репутации как, они встроили в StackOverflow.
Когда я начал разрабатывать свою систему репутации, я понял, ТАКИМ ОБРАЗОМ, модель Q/A не вполне вписывается в мое приложение (так как мое не Q/A), и что, возможно, я должен провести некоторое исследование сначала.
Таким образом, мой вопрос; Что я должен рассмотреть при разработке общественной системы представителя?
Сначала вам нужно решить, должна ли ваша система быть более демократичной (аля SO - один голос - один голос) или более управляемой экспертами (некоторые свиньи... эээ... избиратели более равны, чем другие).
Примером последнего является придание избирателю большего веса на основе либо:
его репутации, либо
его "точности" - например, он проголосовал одинаково с другими избирателями. Это очень сложно сделать правильно, и, скорее всего, потребуется не показывать общее количество голосов в посте до тех пор, пока кто-то не проголосует.
Решите, какие характеристики наиболее важны для вас. Предотвращение злоупотреблений? Избегание определенных типов предвзятости?
Важные функции, которые отличают друг от друга:
"Слепое" голосование (вы не видите рейтинг постов, пока не проголосуете или не скажете "Я не буду голосовать"). Это позволяет избежать давления, заставляющего голосовать вместе со стадом.
Анонимный голосующий. Вы не видите автора поста до тех пор, пока не проголосуете или не откажетесь от голосования. Предотвращает предвзятость "Jon Skeet", за неимением лучшего термина (или миллион голосов за вопрос Джо о черепахе).
Анонимное голосование против поименного. SO, очевидно, имеет первый вариант - он предотвращает ответные действия. В то же время, поименное голосование (например, идентификация того, кто отдал тот или иной голос) способствует более ответственному голосованию и в определенной степени сдерживает некоторые злоупотребления.
Ограничения на голосование (количество голосов на одного голосующего, на одного участника, на одного голосующего на пост и т.д.)
Возможность забрать/изменить результаты голосования
Возможность голосовать по атрибутам, а не по посту в целом (вспомните технический балл против художественного балла в фигурном катании или гимнастике)
Возможность дать настраиваемое количество голосов, либо по решению пользователя, либо по контексту.
В качестве примера последнего можно привести +5 за Q/+10 за A/+0 за CW на StackOverflow в наши дни.
Зернистость ранжирования. Например, точная система баллов SO против "/". Карма 1-5 против чего-то другого.
Разделение голосов. Например, на SO вы никогда не получите репу, если вы отредактируете сообщение настолько, что оно вызовет дополнительную репу. И вы не можете разделить репу, полученную за ответ, с тем, кто внес хорошие идеи для ответа через комментарии.
Есть много мыслей в категории Reputation Patterns в Yahoo's Design Patterns, изложенных:
Мне на ум приходит следующее: