Le variabili di istanza devono essere associate all'istanza proprio all'inizio del metodo in cui sono create?

0

Un problema comune per me - e non è davvero un problema, ma in qualche modo mi chiedo ancora e ancora, qual è il modo normale di gestirlo - è che esiste un metodo e all'interno di questo metodo vengono create un paio di variabili , usati e, infine, dovrebbero essere mantenuti come variabili di istanza.

In qualche modo voglio evitare la notazione dei punti, quindi preferisco che le variabili siano locali in un metodo invece che accedere alle variabili di istanza. Infatti, solo a volte il tempo di accesso conta davvero perché la differenza non è così grande, ma anche quando ci sono diverse variabili con nomi descrittivi già lunghi, se tutti questi sono referenziati con obj. o self. rende tutto ancora più lungo e le cose diventano IMO meno leggibile. Questo è il motivo per cui tendo ad avere tutto locale e alla fine del metodo "salvalo" come variabile di istanza. Ad esempio

classdef myclass < handle
    properties
        basal_blood_pressures
        ...
    end    

    methods
        function obj = myclass()
        end
        function output = verifyBloodPressures(obj, p)
            basal_blood_pressures = getBloodPressures('basal', p);
            n = numel(basal_blood_pressures);
            output = zeros(n);

            for ii = 1:n
                basal_blood_pressures(ii) = basal_blood_pressures(ii) ...
                ...
                output(ii) = ...
            end
            % Attach all variables to instance here 
            % instead of doing it right in the beginning
            obj.basal_blood_pressures = basal_blood_pressures;
            obj.blood...
            obj...
        end
    end
end

Ma fare questo attaccamento alla fine, inoltre, non "sembra giusto" in qualche modo. Qualche consiglio su questo? C'è un buon modo per procedere qui?

    
posta embert 23.09.2014 - 19:03
fonte

1 risposta

1

È difficile rispondere a questa domanda poiché a volte ha effettivamente senso per un metodo per modificare lo stato di un oggetto. Tuttavia, in base al tuo codice di esempio, direi che potresti voler dividere il tuo codice in due classi diverse.

Uno sarebbe BloodPressureCalculator e mantieni il tuo metodo. Quest'ultimo dovrebbe restituire un'istanza dell'altra classe (chiamiamola BloodPressureData ) che contiene i diversi valori prodotti dal tuo metodo.

Probabilmente dovrebbero essere anche di sola lettura, in quanto è probabile che non sia sensato trastullarsi con i risultati della pressione sanguigna.

    
risposta data 23.09.2014 - 23:05
fonte

Leggi altre domande sui tag