Отказ от ответственности:Следующие правила не являются твердыми и быстрыми. Это только мои мнения и личные предпочтения. Я лично считаю, что это упрощает чтение и упрощение кода.
Первый вопрос. Где вы столкнулись с этим советом? Были ли они обоснованы?
По моему опыту, я обычно использовал частные вложенные перечисления для повышения удобочитаемости и ремонтопригодности моего кода. Это особенно вступает в игру, когда вы выполняете интеграцию с другой системой, и вам нужно отправлять определенные строки или номера. Я считаю, что использование перечисления облегчает чтение и обслуживание. В этом конкретном случае информация, передаваемая перечислением, ограничена по охвату классу (т. Е. Она не имеет никакого смысла вне класса, и никто другой не нуждается в ней).
Я не могу думать об определенной причине, которая говорит, почему публичные внутренние перечисления - плохая практика. Но вот причины, почему я не (обычно) использовать их:
- Если перечисление является публичным, это по существу означает, что он передает информацию в большем объеме (то есть, имеет смысл за рамки своего родительского класса и поэтому это, вероятно, означает, что другие вещи используют его). Если это так, то может иметь смысл сделать это автономным перечислением.
- Я нахожу его
ThirdPartyResponseCodes.Success
легче на глазах, а не ThirdPartyIntegrationInterface.ThirdPartyResponseCodes.Success
. Нет причин, по которым вы не можете правильно назвать перечисление для предоставления контекста и, таким образом, сделать его автономным перечислением.
- Я бы предположил, что те же причины не использовать общедоступные внутренние классы также применимы к общедоступным внутренним перечислениям. Прежде всего, если у вас есть внутренний класс, это может означать, что ваш внешний класс может извлечь выгоду из рефакторинга. Возможно, ваш внешний класс пытается сделать слишком много?Однако с другой стороны, существует преимущество инкапсуляции и ограничения области, особенно если вы можете сделать аргумент о том, что внутренний класс имеет смысл только в контексте внешнего класса (который должен идти, если не говорить, если он является конфиденциальным). Если это общедоступный внутренний класс, то это, вероятно, означает, что его область действия простирается за внешний класс и, следовательно, ее нужно будет вытащить.
- Если вам действительно нужно использовать публичное вложенное перечисление, тогда вы должны точно документировать, зачем вам это нужно (я еще не нашел причины для этого), и почему лучше оставить его как публичное вложенное перечисление а не публичное отдельное перечисление.
где вы узнали об этом? можете ли вы указать на эту статью? –
Когда вы говорите, что вы «натолкнулись» на эту стадарду. Как и где. Конечно, везде, где это было сказано, он дал бы некоторые рассуждения. – David
К сожалению, я не могу ссылаться на источник, поскольку он был в форме внутренней электронной почты компании. Объяснение было кратким и упоминалось, что упрощение отладки и соблюдение java-соглашений. – AEW