0

私が書いた次のメソッドを書くためのより効率的な方法を誰でも提案できますか。私はJavaでプログラミングするのが初めてなので、何か知らないかもしれないと感じています。主に、すべてのパラメーター「シナプス」で実行したい3つのifステートメントを記述するより良い方法を考えていました。ありがとう!

public void addSynapse(Synapse synapse)
{
    Synapse newSynapse = new Synapse(synapse.getInputCell());
    this.synapses.add(newSynapse);

    if (synapse.getConnectedState())
    {
        this.connectedSynapses.add(newSynapse);
    }

    if (synapse.getActiveState())
    {
        this.activeSynapses.add(newSynapse);
    }

    if (synapse.getPreviousActiveState())
    {
        this.previousActiveSynapses.add(newSynapse);
    }
}
4

1 に答える 1

0

クラス Synapse の状態を象徴する enum SynapseState を作成できます。列挙型に状態情報を埋め込む利点は、switch ステートメントで使用できることです。Synapse の状態に関連する不変の情報は、抽象メソッドを使用して列挙型に含めることができます。質問のサンプルコードから取得できる情報から私が行ったことを以下の例で確認してください

enum SynapseState {
    CONNECTED(0) {
        @Override
        List<StateParameter> getStateParameters() {
            return null;
        }
    }, ACTIVE(1) {
        @Override
        List<StateParameter> getStateParameters() {
            return null;
        }
    }, PREVIOUS_ACTIVE(2) {
        @Override
        List<StateParameter> getStateParameters() {
            return null;
        }
    };

    private int value;

    private SynapseState(int value) {
        this.value = value;
    }
    abstract List<StateParameter> getStateParameters();

};

class SynapseMachine{

    List<Synapse> connectedSynapses;
    List<Synapse> activeSynapses;
    List<Synapse> previousActiveSynapses;
    List<Synapse> synapses;



    public void addSynapse(Synapse synapse)
    {
        Synapse newSynapse = new Synapse(synapse.getInputCell());
        this.synapses.add(newSynapse);

        switch(synapse.getState()){
        case CONNECTED:
             this.connectedSynapses.add(newSynapse);
            break;
        case ACTIVE:
            this.activeSynapses.add(newSynapse);
            break;
        case PREVIOUS_ACTIVE:
            this.previousActiveSynapses.add(newSynapse);

            break;
         default:   
             throw new IllegalStateException();
        }
    }   
}

class Synapse{
    public Synapse(Object o){}

    SynapseState getState(){
        // TODO Auto-generated method stub
        return null;    
    }

    public Object getInputCell() {
        // TODO Auto-generated method stub
        return null;
    }
}

class StateParameter{

}
于 2012-11-04T05:23:41.057 に答える