ti darò il mio parere , e forse avrò un calci per questo, ma non si preoccupano con protected o private in Ruby. La realtà è che Ruby ti tratta come un adulto, se vuoi eseguire un metodo privato al di fuori della classe, puoi (lì areways). Puoi eseguire metodi protetti al di fuori della classe. Puoi persino riassegnare le costanti ... in pratica puoi fare quello che vuoi.
Ed è per questo che mi piace, è una tua responsabilità. La mia sensazione è che per marcare qualcosa come protected o private che si sta facendo due cose:
- Indicando che non pensi un consumatore avrà bisogno.
- Secondo indovinare quello che qualcun altro ha bisogno.
e, inoltre, si sta rendendo più difficile per testare, in quanto può essere un vero e proprio dolore metodi di prova privati (vedi What's the best way to unit test protected & private methods in Ruby? di modi intorno ad esso)
Per questi ultimi due motivi, I don' t rompiti con loro. Se vuoi davvero una sorta di barriera tra le tue classi/metodi e i consumatori (siano essi codice o sviluppatori) allora ci sono altri modi più efficaci (proxy, offuscamento, crittografia, metodi protetti da password ecc.). Altrimenti, perché non dare loro l'accesso agli stessi strumenti che hai usato?
Mi sembra un po 'strano ... il tuo ** 3 ° punto **. Una sottoclasse può accedere internamente ai metodi 'private' della sua superclasse. Un metodo 'protected' ti dà la possibilità di passare un oggetto della stessa classe ed eseguire metodi protetti su quell'oggetto. – slindsey3000
http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby "i metodi protetti possono essere effettivamente chiamati ogni volta che il ricevitore appartiene alla stessa classe di" sé "" – clyfe