Что '#' символ означает в диаграмме классов UML?

Лично, и я думаю, что это подкреплено конвенцией, EAFP никогда не будет хорошим способом. Вы можете рассматривать его как эквивалент следующего:

if (o != null)
    o.doSomething();
else
    // handle

в отличие от:

try {
    o.doSomething()
}
catch (NullPointerException npe) { 
    // handle
}

Кроме того, рассмотрите следующее:

if (a != null)
    if (b != null)
        if (c != null)
            a.getB().getC().doSomething();
        else
            // handle c null
    else
        // handle b null
else
    // handle a null

Это может выглядеть намного менее изящным (и да, это грубый пример - медведь со мной), но он дает вам гораздо большую гранулярность в обработке ошибки, в отличие от обертывания всего этого в попытке попробовать, чтобы NullPointerException, а затем попытайтесь выяснить, где и почему вы его получили.

Как я вижу, EAFP никогда не должен использоваться, за исключением редких ситуаций. Кроме того, поскольку вы подняли вопрос: да, блок try-catch накладывает некоторые накладные расходы, даже если исключение не выбрано.

63
задан troyal 6 January 2009 в 21:46
поделиться

2 ответа

Это указывает на защищенный участник из класса или другого типа данных.

- Указывает частный

+, Указывает, что общественность

# Указывает защищенный

149
ответ дан Mike Hofer 7 November 2019 в 12:30
поделиться

'#' указывает на видимость. В этом случае это относится к защищенной операции [вырезал термин 'метод', поскольку это не столь универсально].

7
ответ дан Jayden 7 November 2019 в 12:30
поделиться
Другие вопросы по тегам:

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