Ha senso creare un wrapper Ruby per fare riferimento a un oggetto Java che fa esattamente la stessa cosa?

2

Sto utilizzando JRuby .

Nel mio codice Java , ho una classe chiamata Texture , in grado di eseguire alcune manipolazioni grafiche.

Nel mio codice Ruby , di solito dovrò disegnare cose, quindi dovrei chiamare semplicemente Java 's Texture class per fare il disegno per me.

Tuttavia, ho finito per creare una classe Ruby chiamata Texture , che avvolge un'istanza di Java 's Texture . In qualche modo piace questo (solo un esempio, ma piuttosto preciso):

class Texture
    def initialize
        @reference = getMeAnInstanceOfAJavaTexture
    end
    def draw
        @reference.draw
    end
    def rotate
        @reference.rotate
    end
    def clear
        @reference.clear
    end
end

Come puoi vedere, tutta questa classe di Texture è ... beh, dì a Java Texture di eseguire il lavoro per esso. Solo quello.

Inconsciamente, penso che volevo farlo in questo modo perché sembra carino (lol).

Ora, diventando un po 'più tecnico, un possibile vantaggio che vedo è che in questo modo non devo interagire molto con Java -side del progetto . La maggior parte del lavoro che farò sarà in Ruby , e il mantenimento di un'interazione costante tra Ruby e Java può essere fonte di confusione. Se creo una classe Ruby che gestisca questa roba per me, potrei sentirmi più a mio agio in futuro quando dovrò fare un centinaio di trame, ma invece di interagire cento volte con Java , lo faccio con Ruby , il mio ambiente principale.

Il mio ragionamento ha un senso o è una scusa debole per fare qualcosa che sembra bello? O forse c'è davvero una buona ragione per fare ciò che ho appena fatto?

    
posta Omega 22.01.2013 - 09:30
fonte

1 risposta

2

Sì, probabilmente ha senso.

Senza una classe di questo tipo, dovrai ricordare i dettagli della chiamata alla classe Java in ogni posto in cui la usi e ottenere quei dettagli in ogni posto - e anche se questo è un uso abbastanza semplice di Java per rendere questo non un fardello, quelle linee di codice "sentiranno" di più nell'idioma Java rispetto all'idioma Ruby, interrompendo il flusso del tuo programma durante la lettura del codice. Quando ti ritrovi a ripetere questo uso in più punti, il valore nel fissare questo cresce (ad esempio, un uso di una classe Java probabilmente non giustifica un wrapepr).

In conclusione: creare una classe o un metodo per racchiudere qualcosa che ti ritrovi a fare più e più volte in una semplice interfaccia che risulti giusta nel contesto del tuo programma può rendere il tuo codice più facile da leggere e mantenere.

    
risposta data 22.01.2013 - 14:56
fonte

Leggi altre domande sui tag