Главная - Литература

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 [97] 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

Output File End Enum

Перечислимые типы - мощная альтернатива устаревшим схемам, в которых вы подробно расписываете:«1 - это красный, 2 - зеленый, 3 - голубой...». В связи с этим можно предложить следующие принципы применения таких типов.

Используйте перечислимые типы для читабельности Вместо выражений вроде:

if chosenColor = 1

вы можете написать более читабельную фразу, например:

if ChosenColor = Color Red

Каждый раз, когда вы видите числовую константу, подумайте: не заменить ли ее перечислимым типом.

Перечислимые типы особенно полезны для определения параметров методов. Кто поймет, что означают параметры этой функции?

Пример вызова функции, в котором стоило бы использовать перечислимые типы (С++)

int result = RetrievePayrollData( data, true, false, false, true );

A параметры в этом вызове функции гораздо понятнее:

Пример вызова функции, использующей перечислимые типы для читабельности (С++)

int result - RetrievePayrollData(

data,

EmploymentStatus CuгrentEmployee, PayrollType Salaried, SavingsPlan NoDeduction, MedicalCoverage IncludeDependents

Используйте перечислимые типы для надежности В некоторых языках (особенно в Ada) перечислимые типы заставляют компилятор выполнять более тщательную проверку типов, чем при работе с целыми значениями и константами. При использовании именованных констант компилятору неоткуда узнать, что единственные возможные значения переменной - это ColorRed, ColorjGreen и ColorBlue. Компилятор не будет возражать, встретив выражения вроде color = Country England или country = Output Pnnter. Если вы используете перечислимые типы, то при объявлении переменной типа Color компилятор позволит присвоить ей только значения Color Red, ColorGreen или ColorBlue.

Используйте перечислимые типы для модифицируемости Перечислимые типы позволяют вам легко модифицировать код. Обнаружив пробел в своей схеме «1 - это красный, 2 - зеленый, 3 - голубой», придется пройти по коду и изменить все вхождения i, 2, 3 и т. д. А используя перечислимые типы, вы можете



продолжить добавление элементов в список, просто поместив их в определение типа и перекомпилировав программу.

Используйте перечислгшые типы как €1льтернативу логический переменным Очень часто логической переменной недостаточно для представления необходимых значений. Представьте, что у вас есть метод, возвращающий True, если он успешно выполнил свою задачу, и False в противном случае. Позднее вы можете обнаружить, что на самом деле у вас есть два варианта False. Первый означает, что задание не выполнено, но это повлияло только на сам метод; второй - что невыполнение задания привело к фатальной ошибке, которую надо передать в остальную часть программы. В этом случае перечислимый тип со значениями Status Success, Status Wammg и StatusJFatalError подходит больше, чем логический тип со значениями true и false. Эту схему очень легко расширять новыми вариантами успешного или неудачного выполнения.

Проверяйте некорректные значения Когда вы используете перечислимый тип в условиях или case, проверяйте появление недопустимых значений. В переключателе case для перехвата неправильных значений применяется оператор else-.

Хороший пример проверки некорректных значений в перечислимом типе (Visual Basic)

Select Case screenColor Case Color Recl

Case Color Blue

Case Color .Green

- Здесь выполняется проверка неправильного значения.

-> Case Else

DisplayInternalError( False, "Internal Error 752: Invalid color." ) End Select

Настройте первый и последний элемент перечислимого типа для использования в качестве границ циклов Определение первого и последнего элемента в перечислении в виде ColorFirst, Color Last, Country First, Country Last и т. д., позволяет писать циклы, проходящие по всем элементам типа. Вы настраиваете свой перечислимый тип, используя явные значения:

Пример установки значений First и Last перечислимого типа (Visual Basic)

Public Enum Country Country First = 0 Country China = 0 Country England - 1 Country France - 2 Country Germany = 3 Country India = 4 Country Japan = 5



Country Usa = 6 Country Last = 6 End Enum

Теперь элементы Country First и Country Last могут служить как границы цикла: Хороший пример циклического вызова элементов перечисления (Visual Basic)

Вычисляем курсы валют по отношению к долларам США. Dim usaCurrencyConversionRate( Country Last ) As Single Dim iCountry As Country

For iCountry = Country First To Country Last

usaCurrencyConversionRate( iCountry ) = ConversionRate( Country Usa, iCountry ) Next

Зарезервируйте первый элемент перечислимого типа как недопустимый

При объявлении перечислимого типа зарезервируйте его первый элемент в качестве недопустимого значения. Большинство компиляторов присваивает первому элементу перечисления значение 0. Объявление некорректным элемента, приравненного О, поможет выявить неправильно проинициализированные переменные, так как они вероятнее всего будут равны О, чем любому другому неправильному значению.

Вот как при этом подходе будет выглядеть перечислимый тип Country. Пример объявления первого элемента перечисления недопустимым (Visual Basic)

Public Enum Country

Country InvalidFirst = 0

Country First = 1

Country China = 1

Country England - 2

Country France - 3

Country Germany - 4

Country India = 5

Country Japan = 6

Country Usa - 1

Country Last - 7 End Enum

Точно укажите в стандартах кодирования для проекта, как должны использоваться первый и последний элементы, и неукоснительно придерживайтесь этого Использование в перечислениях элементов InvalidFirst, First и Last может сделать объявления массивов и операторы циклов читабельнее. Но есть вероятность неразберихи в таких вопросах: с чего начинаются значимые элементы перечисления - с О или 1 и является ли допустимыми первый и последний элементы? Если используется эта технология, стандарты кодирования для проекта в целях уменьшения количества ошибок должны требовать применения элементов InvalidFirst, First и Last для всех без исключения перечислений.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 [97] 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294



0.0089