2015-08-08 2 views
-1

Почему эта «хорошая практика кодирования»? Например, когда я делал консольную игру Rock Paper Scissors, большинство людей предлагали использовать перечисления вместо строк. В чем разница?Почему я должен использовать перечисления вместо строк?

+2

http://stackoverflow.com/questions/11575376/why-use-enums-instead-of-constants – John

+0

[Ответа на этот вопрос Jon Skeet] (http://stackoverflow.com/a/11575421/477420) как было найдено пользователь3360241 имеет очень хорошее объяснение, но, к сожалению, не может быть использован как дубликат из-за несоответствия тегов C#/Java. Ответ Guffa ниже дает C# аромат. –

ответ

2

Проверить это подробное описание

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

http://www.codeproject.com/Articles/18809/Enums-in-C

+0

Это отличная разбивка перечислений –

6

Это лишь один из способов, которые вы делаете работу компилятора для вас. Если вы используете строки, компилятор не может помочь вам обнаружить опечатку в значении:

if (move == "rokc") { // just never matches 

но если использовать перечисление компилятор только позволяет использовать действительные значения:

if (move == Moves.Rokc) { // compilation error 
+0

Я вижу, что интересно, есть ли другие причины? –

+0

@funTertain: Это самый большой, но есть также преимущество в производительности. Значение enum - это просто число в конце, и быстрее работать с числами, чем строки. – Guffa

+0

Производительность, предотвращение орфографических ошибок, лучше автозаполнение от разработки IDE. Если вы пишете API для других разработчиков: лучшая (неявная) документация для допустимых значений для переменной, Примечание: вы также можете делать такие вещи, как Move.Rock.ToString() – Mike

0

Частично, это является матерью краткости общения. Строки - общие вещи, перечислены конкретные. Отчасти это предотвращает ошибки. Используя строки, вы можете иметь правописание и различия в случае, которые могут вызвать ошибки. Если вы ошибаетесь/ошибочно перечислите, вы получите ошибку компиляции. Если вы просто представляете три простых состояния рока, бумаги, ножниц, это может показаться не слишком важным, но поскольку код, который вы пишете, становится больше, вы обнаружите, что хотите воспользоваться любой возможностью, чтобы уменьшить изменение ошибки и ясности выражения. Любой, кто программирует достаточно долго, будет испытывать трудности с попыткой понять код, который они пишут в прошлом.

0

Первые перечисления - это просто метки против чисел. Это означает, что в то время как ваш код представляет документы, ножницы и скалы - программа видит 1, 2 и 3. У компьютеров нет проблем с чтением или запоминанием, но люди делают, поэтому ваш код будет читать бумажные удары рок, а компьютер видит 1 удары 3. Это важно с точки зрения производительности.

Список также ограничен. Использование перечисления означает, что вы можете иметь только одно из этих трех значений или оно не будет компилироваться. Использование строк означает, что ваш код должен постоянно проверять равенство во время выполнения, поэтому он становится раздутым, медленным и подверженным ошибкам.

Смежные вопросы