Как избежать передачи одной переменной из одного метода в другой

Используйте SERVER \\ INSTANCE NAME. Использование двойной обратной косой черты в моем проекте решило мою проблему.

0
задан Steve B 25 February 2019 в 16:07
поделиться

2 ответа

Вы правы, что вам неудобно с этим кодом. Кажется, что каждый из вызванных методов знает, какая следующая строка должна быть обработана, поэтому они тесно связаны, и логика для принятия решения о следующей строке распределена по нескольким методам. Yeuch! Если следующий ряд действительно должен быть на 1 больше предыдущего, то, вероятно, лучше централизовать эту логику в методе createControlPanel:

private void createControlPanel() {
  int initialRow = 0;
  initSessionControls(controlPanelGB, initialRow);
  initBidControls(controlPanelGB, initialRow+1);
  initSnapshotControls(controlPanelGB, initialRow+2);
}

Это яснее, чем ваше второе решение выше, так как ясно что второй аргумент является строкой, и как он связан с начальным значением строки.

0
ответ дан ComDubh 25 February 2019 в 16:07
поделиться

Я предлагаю использовать класс ControlPanelFiller:

class ControlPanelFiller {
    private final ... controlPanel;
    private int row = 0;
    public ControlPanelFiller(... controlPanel) {
        this.controlPanel = controlPanel;
    }
    public ControlPanelFiller initSessionControls() {
        ...
        ++row;
        return this;
    }
    public ControlPanelFiller initBidControls() {
        ...
        ++row;
        return this;
    }
    public ControlPanelFiller initSnapshotControls() {
        ...
        ++row;
        return this;
    }
}

private void createControlPanel()
{
    ControlPanelFiller cpf = new ControlPannelFiller(controlPanelGB);
    cpf.initSessionControls()
        .initBidControls()
        .initSnapshotControls();
}
0
ответ дан Torsten Fehre 25 February 2019 в 16:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: