Необсуждаемое в программировании
Jan. 22nd, 2011 10:57 pmИспользуйте идиоматические конструкции везде, где только можно. Чтобы это делать, нужно хорошо знать язык и идиомы, ровно как и в случае с человеческими языками. Лексической и синтаксической корректности текста, его правильного форматирования и отсутствия фактических и логических ошибок недостаточно. Требуются также короткие, легко узнаваемые, четкие, ясные и лаконичные выражения.
К примеру, использование цикла
«Пользуйтесь длинными, содержательными именами для глобальных объектов и короткими — для локальных... Локальные переменные, используемые стандартными образом, вполне могут иметь очень короткие имена. Например, традиционно счетчики циклов обозначаются
1.6. Комментарии
Не повторяйте очевидное... Не комментируйте плохой код — переписывайте его... написание хорошего кода имеет много общего с написанием хорошего литературного текста... Придерживайтесь стандарта... Программируйте базовыми средствами языка... Избегайте проблематичных возможностей языка... Пользуйтесь стандартными библиотеками... Пользуйтесь только средствами, имеющимися в наличии везде... Избегайте условной компиляции... Поддерживайте совместимость с существующими программами и данными» (Керниган и Пайк, «Практика программирования», перевод с английского под редакцией В. Л. Бродового, 2004).
Обсуждать программирование с кем-либо, не знакомым с содержанием вышеупомянутой книги (необязательно из нее самой) и языком программирования ANSI C в объеме учебника Кернигана и Ритчи, считаю абсолютно бессмысленным. В случае отсутствия такого противопоказания осмысленность обсуждений немедленно оказывается под серьезным сомнением, если собеседник не чувствует себя уверенным в работе со стандартом IEEE 1003.1 — основным приложением данного языка.
К примеру, использование цикла
for
оправдано только в том случае, если в его заголовке используется только одна переменная специально для прохода по массивам и спискам. Не заставляйте программиста обращать внимание на этот заголовок. При виде for
, читатель ожидает идиоматическую конструкцию, и ему должно быть полезно лишь тело цикла.«Пользуйтесь длинными, содержательными именами для глобальных объектов и короткими — для локальных... Локальные переменные, используемые стандартными образом, вполне могут иметь очень короткие имена. Например, традиционно счетчики циклов обозначаются
i
и j
, указатели — p
и q
, а строки — s
и t
. Используя вместо этих обозначений более длинные, можно не только ничего не выиграть, но даже проиграть. Рассмотрим такой пример:? for (theElementIndex = 0; theElementIndex < numberOfElements; theElementIndex++) ? elementArray[theElementIndex] = theElementIndex;А теперь перепишем его в следующем виде:
for (i = 0; i < nelems; i++) elem[i] = i;Программистов часто приучают применять длинные имена вне зависимости от контекста. Это ошибка — удобочитаемость часто достигается именно краткостью записи...
1.6. Комментарии
Не повторяйте очевидное... Не комментируйте плохой код — переписывайте его... написание хорошего кода имеет много общего с написанием хорошего литературного текста... Придерживайтесь стандарта... Программируйте базовыми средствами языка... Избегайте проблематичных возможностей языка... Пользуйтесь стандартными библиотеками... Пользуйтесь только средствами, имеющимися в наличии везде... Избегайте условной компиляции... Поддерживайте совместимость с существующими программами и данными» (Керниган и Пайк, «Практика программирования», перевод с английского под редакцией В. Л. Бродового, 2004).
Обсуждать программирование с кем-либо, не знакомым с содержанием вышеупомянутой книги (необязательно из нее самой) и языком программирования ANSI C в объеме учебника Кернигана и Ритчи, считаю абсолютно бессмысленным. В случае отсутствия такого противопоказания осмысленность обсуждений немедленно оказывается под серьезным сомнением, если собеседник не чувствует себя уверенным в работе со стандартом IEEE 1003.1 — основным приложением данного языка.