Pergunta

Eu tenho pensado em como implementar o recurso de crachá semelhante ao SO's em um novo site. Qual é a melhor maneira de armazenar critérios para crachás?

Duas idéias:

  • Todo o código
  • 'Segundo Sistema' - Crie uma meta arquitetura para definir crachás e seus critérios. Armazene algumas informações no banco de dados e faça com que o código as consulte para descobrir os crachás e seus critérios.

Existem maneiras melhores?

Foi útil?

Solução

Regras.

Você cria eventos no sistema e usa regras em um processador de fluxo de eventos.

Especificamente, diga que você tem um crachá "fez 10 posts". Você não executa "Selecionar contagem (*) de postagens onde o usuário =: Usuário" para cada postagem. Em vez disso, você tem uma regra simples que observa cada postagem que vem e "conte -os", armazenando o estado de regras no perfil do usuário.

Dessa forma, "10 posts" é tão barato quanto "fez 1.000.000" postagens.

Isso também torna o sistema muito mais extensível.

Outras dicas

Eu concordo com Will neste.

Crie "eventos" sobre as páginas para que toda vez que um evento acontece, ou seja. Um usuário exclui uma postagem, ele consultará o módulo de evento com o evento, digamos, event_user_delete_post e você pode selecionar esse evento e criar uma consulta com base nele. Você pode decidir se um crachá é concedido ou não.

Isso manterá as duas lógicas separadas e manterá um design modular. Deve ser muito fácil implementar dessa maneira.

A única desvantagem é que, se o evento não foi "capturado", um usuário poderá ter obtido um critério de crachá, mas ainda não foi recompensado. No entanto, isso nunca deve ocorrer. A única situação em que consigo pensar é se o banco de dados for manipulado manualmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top