Анимация
JavaScript
|
Главная Библионтека Часть Правила, относящиеся к языку Си В этой главе рассматриваются специфичные для Си правила программирования, не встречавшиеся в предыдущих разделах. 85. Подавляйте демонов сложности (часть 2) Демоны запутанности особенно опасны в Си. Кажется, что этот язык сам собой поощряет выбор неестественно усложненных решений для простых задач. Последующие правила посвящаются этой проблеме. 85.1. Устраняйте беспорядок Язык Си предоставляет богатый набор операторов и, как следствие, предлагает множество способов ничего не делать, что и иллюстрируется примерами из таблицы 2. Таблица 2. Как ничего не делать в Си
if (x>y) else if (x<y) else if ( x ==y ) *(p+i) if (x>y) else if (x<y) else p[i]; он вам не нужен. Если первое значение не больше и не меньше второго, то они должны быть равны. Это, по сути, единственное исключение из приводимого ниже в данной главе правила об использовании указателей. При реализации действительно случайного доступа к элементам массива запись со скобками легче читается, чем вариант с указателем, в равной степени неэффективный при случайном доступе. Раз мы уж заговорили о ничегонеделаньи, то имейте в виду, что Си с удовольствием допускает выражения, которые ничего не делают. Например, следующий оператор, показываемый полностью, совершенно законен и даже не вызовет предупреждающего сообщения компилятора: a+b; Конечно, если вы хотели записать: a+=b; то вы, должно быть, попали в беду. 85.2. Избегайте битовых масок; используйте битовые поля Многие программисты, в особенности те, кто начинал жизнь с языком ассемблера, привыкли пользоваться битовыми масками, а не битовыми полями. Мне довелось видеть много программ, подобных следующей: struct fred int status; #define CONDITION A #define CONDITION B 0x01 0x02 Комментарий в язхке Си должен быть заключен в /* */. - Ред. 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 |