lunedì 27 febbraio 2012

E 'di classe String di Java un oggetto Dio?

Nel mese di ottobre ho scritto un blog intitolato Top Trumps in oggetti di Dio , dove ho parlato della scoperta di un oggetto che avevo trovato con 167 metodi diversi che collegavano questo oggetto con tutte le altre parti la domanda e, come ci si aspetterebbe, ha seguito il criteri generali per un oggetto Dio o mostro. E 'stato recentemente mi ha fatto notare che il metodo del conteggio da solo non è un'indicazione che un oggetto è un oggetto Dio, Che è abbastanza vero. Il commento anche continuato a posto la classe String come un oggetto che non è un oggetto Dio, ma ha un gran numero di metodi.Questo mi ha fatto pensare: la classe String è una classe ben progettato in termini di regole generali di Object Oriented Design? Ha, infatti, rompere il principio di responsabilità singola o le leggi di Demetra e sta strettamente legato a tutte le altre parti di un'applicazione? E 'un oggetto Dio? Il modo più semplice per rispondere a questa è quella di guardare una stringa in termini di principio della responsabilità del singolo, e il modo migliore per farlo è quello di contare il numero di chiamate al metodo che ha e capire quello che fanno. Se lo fate vi accorgerete che classe String di Java dispone di 66 chiamate al metodo in essa il repertorio e si può concludere che un numero questo alto potrebbe essere il primo segno di un oggetto Dio.. Poi, se si guarda a questi metodi 66 chiamate è possibile raggrupparli in diverse aree di responsabilità. Per esempio ci sono:


Metodi di conversione

  • getBytes (...)
  • getChars (...)
  • valueOf (...)
  • toUpperCase (...)
  • toLowerCase (...)
  • toCharArray (...)

I metodi che Suddivisione di una stringa

  • substring (...)
  • split (...)
  • sottosuccessione (...)

Metodi di equivalenza

  • equals (...)
  • partite (...)
  • compareTo (...)

Metodi di ricerca

  • indexOf (..)
  • lastIndexOf (...)
  • charAt (...)
  • contiene (...)

Metodi di Combinare

  • append (...)
  • concat (..)
  • +
  • + =
. ... E altro ancora utilizzando gli elenchi di cui sopra, si può ora scrivere una scheda CRC di una stringa che va qualcosa come questo: "A String è responsabile per combinandosi con altre stringhe per creare nuove stringhe E si converta in altri oggetti o array di oggetti e di suddivisione di sé in diversi pezzi e mettendo a confronto se stesso oggetti String altri l'esecuzione di ricerche su se stesso " L'aderenza alla lettera della legge, quindi gli elenchi sopra mostrano metodo String chiama scomporre in almeno cinque aree di responsabilità, il che significa che, per il libro, il principio di responsabilità del singolo è stata violata. Alla luce di questa alla sua logica conclusione, allora si potrebbe refactoring una stringa simile a questa .... Tuttavia, e questa è la domanda, perché non è String di Java classe composta di alcuni dati e un mazzo di classi che operano su di esso? La risposta è sia una questione di opinione e sfaccettato. In primo luogo, la storia ... Java come cresciuta nel tempo come ha fatto in modo che la classe String, i metodi sono stati aggiunti alla spicciolata, come il numero di versione Java fa tic tac sempre più verso l'alto. In secondo luogo, il pragmatismo. Un oggetto String nella sua forma attuale può rompere la singola regola di responsabilità, ma non importa, è più facile lasciare così com'è e andare avanti con la scrittura dei programmi che contano. Infine, e credo che questo sia importante, tutti noi sappiamo che in genere è una stringa. Il suo nome e il significato è di uso comune. Se dovessimo definire ciò che una stringa è responsabile per l'utilizzo di una scheda CRC, allora avremmo scrivere qualcosa come: "una stringa è tenuto ad essere String s". A String può avere 66 metodi, ma credo che per consenso generale non è un Dio Object. Tuttavia, il software è solo una questione di opinioni, quindi vi lascio rispondere alle altre domande che ho posto all'inizio di questo blog e per rendere la vostra mente su ... 





Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.