Dare un nome a un involucro contraddittorio

2

Ho scritto un consumatore Monix che racchiude un Kafka Producer e sono in perdita su cosa nominare il risultato. KafkaConsumer è già una classe , che ha essenzialmente il significato opposto a cui gli sviluppatori di questo codice sono molto più familiari. I nomi opposti sono perché Kafka chiama di conseguenza a consumare dal filo, mentre Monix nomina di conseguenza il consumo da parte dei produttori all'interno del codice.

Quale nome comunica più chiaramente che questo Consumer dovrebbe essere usato dove è stato precedentemente utilizzato KafkaProducer , e non dove precedentemente era stato utilizzato KafkaConsumer , senza causare ulteriore confusione per le persone lo guardano dal punto di vista di Monix? Perché il nome suggerito è migliore?

    
posta Karl Bielefeldt 28.12.2017 - 16:34
fonte

2 risposte

5

Poiché stai collegando due tecnologie che utilizzano i termini produttore e consumatore in modo diverso, starei lontano da questi termini.

Probabilmente chiamerei il componente qualcosa come MonixKafkaConnector

    
risposta data 28.12.2017 - 18:11
fonte
0

Il nome è difficile, Martin Fowler e Uncle Bob (Robert C. Martin) lo riconoscono. Ma è solo difficile, perché non siamo davvero bravi in questo. Nemmeno io.

Ancora, lascia che provi a darti un consiglio.

In generale, cerco di evitare nomi che terminano con -er, o -or, perché in genere puntano a riutilizzare nomi di azioni o nomi di metodi come Connector ha un metodo connect . Quindi, non nominare le tue classi e oggetti dopo le azioni . Come sempre, ci sono alcune eccezioni come Utente, Adattatore, ecc.

Inoltre, un buon consiglio viene dallo zio Bob. I nomi si riferiscono all'architettura del sistema e non è necessario assegnare un nome alle classi dopo la tecnologia sottostante, ma dopo il ruolo nel sistema. Se guardi una stampa blu di una biblioteca, puoi vedere quali parti sono gli scaffali dei libri che quale parte sono i posti a sedere e le scrivanie per i lettori, ecc. La stampa blu non indicherà i materiali usati, come legno, cemento, unghie, ecc. Quindi, assegna un nome alle classi dopo lo scopo che servono invece della tecnologia che hai utilizzato .

Nel tuo caso, fammi provare questo ... Prova a trasferire i messaggi da una coda all'altra, quindi la mia prima ipotesi sarebbe MessageGateway . Sembra sciocco? Può essere. Ma potresti voler dare un significato più profondo, dicendo che tipo di messaggi vengono trasferiti. Se ritieni che non sia distinto, perché invii tutti i tipi di messaggi su quel Gateway , forse hai violato il Principio di responsabilità singola e vuoi dividerlo? ... abbastanza da indovinare.

Provalo, è difficile, ma pagherà perché diventerà più facile più nomi hai trovato e più pratica avrai.

Come ho detto ... nominare è difficile, ma continua a provare!

Ulteriori letture:

  • Martin Folwer: link
  • Clean Code - Robert Martin - Capitolo 2: Naming Discussion: link
  • Yegor Bugayenko: link
risposta data 30.12.2017 - 19:37
fonte

Leggi altre domande sui tag