Какие есть нестандартные способы использования пространств имен? - PullRequest
0 голосов
/ 25 сентября 2008

Меня интересуют беспрецедентные, крутые и эзотерические способы использования пространств имен. Я знаю, что многие продвинутые разработчики "взламывают" пространства имен, например, используя их как ссылки на строковые константы. В примере строковых констант идея заключается в реализации DRY (DRY = не повторять себя), и вы можете хранить все свои строки в одном файле.

примечание: я ищу ответы, относящиеся к "обычным" языкам, таким как C #, Ruby, Java и т. Д.

1 Ответ

1 голос
/ 25 сентября 2008

Я часто прибегаю к эзотерическому использованию при определении перечислений в C ++, особенно когда есть несколько типов в определенном контексте. Это позволяет использовать, например, Quality::k_high и Importance::k_high в связанных контекстах. Перечисления также часто содержат неизвестные значения (обычно для представления случаев, когда ни одно из них не было установлено), которые необходимо квалифицировать для устранения неоднозначности констант (скажем, k_qualityNone и k_importanceNone), которых избегают с использованием пространств имен.

Определение будет выглядеть следующим образом:

namespace Quality {
   enum Type { k_high, k_medium, k_low, k_none };
}

и

namespace Importance {
   enum Type { k_high, k_medium, k_low, k_none };
}

Функции и методы примут аргумент типа Quality::TypeImportance::Type), который достаточно описательный и приятный. Индивидуальные константы перечисления также квалифицируются так же, как упоминалось ранее (Quality::k_low).

...