Come progettare la classe degli utenti

3

Ho sviluppato il sistema Cloud Broker, quindi ho utenti. Gli utenti possono registrarsi con il numero di telefono e il codice. Come dovrei progettare la classe User?

Class User
{
 public string User_Name{get;private set;}
}

O

Class User
{
 public string User_Name{get;private;}
 public string Phone_Number{get;private;}
}

Quindi dovrei:

  • Aggiungi Nome utente e Numero telefono entrambi in Classe utente e verifica l'autenticazione con il numero di telefono
  • Aggiungi solo Phone_Number nella classe User
  • Aggiungi solo nome utente e converti Phone_Number in User_Name
posta Ebulfez 06.07.2018 - 10:40
fonte

2 risposte

3

In primo luogo, è sempre una buona idea non abusare di variabili con un nome specifico per contenere dati completamente diversi. Fai in modo che il programmatore di manutenzione (che potrebbe essere effettivamente tu) un favore non inserisca i numeri di telefono in una variabile membro chiamata User_Name o viceversa.

Quindi, se ti ho ragione, al momento hai solo un caso d'uso in cui devi trattare sia con nomi utente che con i loro numeri di telefono, dove entrambi potrebbero essere usati in modo intercambiabile, giusto?

Vorrei raccomandare quanto segue:

  • se c'è la minima possibilità che nella prossima versione del tuo sistema ci possa essere un nuovo requisito per memorizzare separatamente, nomi utente e numeri di telefono, aggiungi due variabili membro diverse (ma consenti valori vuoti almeno per uno di essi, e lascia che sia l'authentification ad occuparsene)

  • se sai per certo che questo non sarà mai il caso, ci sarà sempre un nome utente o un numero di telefono da memorizzare, ma mai entrambi, quindi dare l'attributo un nome diverso, più generale, forse AuthentificationCode o qualcosa del genere. Puoi anche aggiungere un altro attributo per archiviare le informazioni se AuthentificationCode è un numero di telefono o un nome utente, nel caso questo sia importante per il tuo sistema.

In realtà, trovo più probabile che per qualsiasi sistema in cui sia richiesta l'autenticazione, è necessario un nome utente indipendentemente dal metodo di autenticazione, quindi potrebbe essere necessario il nome di un utente e un attributo generale AuthentificationCode . Ma questo è qualcosa che devi decidere per te stesso, conoscendo i requisiti generali meglio di noi.

    
risposta data 06.07.2018 - 13:47
fonte
4

Non ha importanza. Se stai seguendo un paradigma orientato agli oggetti, allora funzionalità è ciò che devi pensare.

Quindi, invece di aggiungere dati, pensa a quali dati verranno utilizzati per e aggiungili alla classe User . Se vuoi autenticare , quindi aggiungi un metodo Authenticate() .

Nascondere i dati e offrire funzionalità rilevanti per il business. In questo modo non importa quali siano i dati contenuti nell'oggetto, diventa un dettaglio come dovrebbe essere e può essere modificato molto facilmente in seguito, se necessario.

    
risposta data 06.07.2018 - 13:12
fonte

Leggi altre domande sui tag