Domanda

Ho pensato a come implementare la funzionalità di badge simile a SO su un nuovo sito Web. Qual è il modo migliore per conservare i criteri per i badge?

Due idee:

  • Tutto codice
  • "Second System" - Crea una meta architettura per definire i badge e i loro criteri. Archivia alcune informazioni nel database e fai domanda di codice per capire i badge e i loro criteri.

Ci sono modi migliori?

È stato utile?

Soluzione

Regole.

Si creano eventi nel sistema e si utilizzano le regole all'interno di un processore di flusso di eventi.

In particolare, supponiamo che tu abbia un badge "fatto 10 post". Non esegui "Seleziona COUNT (*) dai post in cui utente =: utente" per ogni post. Piuttosto, hai una semplice regola che osserva ogni post e "contali", memorizzando lo stato delle regole nel profilo utente.

In questo modo "fatti 10 posti" è economico come i posti "realizzati da 1.000.000".

Questo rende anche il sistema molto più estensibile.

Altri suggerimenti

Sono d'accordo con Will su questo.

Crea "eventi" sulle pagine, quindi ogni volta che si verifica un evento, cioè. Un utente elimina un post, interrogherà il modulo evento con l'evento, diciamo, event_user_delete_post e quindi puoi selezionare quell'evento e creare una query in base a esso. Puoi quindi decidere se un badge viene assegnato o meno.

Ciò manterrà separati le due logiche e manterrà un design modulare. Dovrebbe essere molto facile da implementare in questo modo.

L'unico aspetto negativo è che se l'evento non è stato "catturato", un utente potrebbe aver guadagnato un criterio di badge ma non è stato ancora premiato. Tuttavia, ciò non dovrebbe mai verificarsi. L'unica situazione a cui riesco a pensare è se il database viene manipolato manualmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top