Sto scrivendo una domanda aperta per cercare vantaggi o svantaggi nella creazione di nuove classi in R. Da quello che posso dire, ci sono essenzialmente quattro diversi paradigmi che vengono utilizzati durante la creazione di classi in R, S3, S4, R5 (o RC) e R6.Creazione di classi in R: S3, S4, R5 (RC) o R6?
S3 è ciò che la maggior parte delle librerie di base di R utilizza, e sembra esserci un merito di attenersi al modello semplice e leggermente strutturato di utilizzare l'invio di metodi generici. Vorrei evitare di usare questo per altri motivi che non mi sono del tutto chiari, come l'incapsulamento, le definizioni dei metodi, ecc. Ad esempio, sembra piuttosto complicato quando si struttura una classe, perché i metodi generici sono definiti al di fuori del classe, e cose di quella natura.
S4 non sembra essere migliore, ma ha una nozione di sicurezza del tipo di uomo povero coinvolto con esso, per rendere evidenti gli errori che potrebbero apparire più evidenti. Tuttavia, mi sento ancora come se le classi S4 fossero difficili da mantenere nel senso che non sono sicuro di cose come l'incapsulamento e quelle che sono coinvolte in queste classi. Un'altra cosa che sembra confondermi è che c'è poco o nessun concetto di namespace.
R5 sembra essere un po 'più simile a quello a cui sono abituato, dove le definizioni dei metodi sono legate alle classi piuttosto che alle funzioni di dispacciamento. Qui, c'è un po 'più di pensiero che entra in gioco con l'organizzazione di un oggetto in termini di una classe a cui sarei abituato. Un possibile svantaggio è che anche R5 è costruito fuori da S4.
R6 sembra essere una riscrittura di R5 da parte di un individuo che aggiunge più funzioni OOP al mix, come funzioni e proprietà private e pubbliche, ma difficilmente trovo alcun supporto per queste classi altrimenti, poiché le informazioni su di esse sembrano essere scarso attraverso la ricerca di Google.
Come si può dire, sto lottando con i concetti OO in R e io non riesco a capire i seguenti sfaccettature che sono normalmente associati con OOP:
- tipologia di sicurezza/Tipi
- Vincolo metodo/oggetto, incapsulamento, variabili membro, ecc.
- Namespace e organizzazione codice
- Versioni di ereditarietà.
Mi chiedo se qualcuno può fornire una risposta che può descrivere quale sia il sistema di classe preferito nella comunità R e come pensare meglio quando utilizzare le classi.
perché le risposte alle domande di opinione "avanzate" vengono risolte e potenziate, ma le domande di opinione di base vengono contrassegnate, catramate e sfumate? usa google, chiedi rdev, leggi i libri colorati, ecc, ecc. – rawr
C'è anche proto e R.oo. Ad ogni modo, le risposte astratte non sono probabilmente così utili qui. Prendi un problema concreto, più piccolo ma simile al tuo vero, e scrivilo usando ciascuno dei tipi di classe e vedi con quale ti senti più a tuo agio. Se non sei disposto a farlo, non avrai davvero le basi per prendere una decisione intelligente, quindi usa S3 poiché è il più usato e non puoi davvero sbagliarlo. –
È un peccato che questa domanda sia chiusa. Ecco la risposta che vorrei dare: Usa S3 e R6, come appropriato. Non usare RC (è stato sostituito da R6). Non usare S4, è più fastidioso di quanto non valga e non fa molto bene la programmazione funzionale o l'OOP (l'unica eccezione è il suo supporto per i metodi multimodici, ma raramente è necessario). –