2009-06-21 5 views
19

Как мое формальное образование в программировании до даты C, я изучил C от K & R и других текстов.Лучшие практики для произношения кода C

Есть ли полезные советы для вокализации кода C при чтении и записи?

Например, в

d = emalloc(sizeof(*d)); 
d->d_name = estrdup(name); 

является «=» лучше всего читается как «устанавливается на» или «равно» или что-то еще?

Будет ли '==' тогда читать как 'equals' или 'is' или 'имеет такое же значение, как'?

Аналогично с "* D", "D-> d_name", а затем "& д", "&", "& &", и так далее.

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

+6

«Как мое формальное образование в программировании до даты C» ... Удивительно. –

+2

+1 для дурацкого, но интересного вопроса – SingleNegationElimination

+1

должен быть wiki сообщества. – SilentGhost

ответ

3

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

И интересно, это работает, даже если я действительно не знаю, что делает функция. Например, я раньше не встречал emalloc(), но мой мозг все еще говорит мне, что делает утверждение (возможно).

Если по какой-то причине (войны национальной безопасности?) Я Т.Б. читать что-то вроде:

d->d_name = estrdup(name); 

по телефону, я бы сказал:

«вещь, на которую указывает d's d_name член получает назначен результат призывающую estrdup с именем в качестве параметра »

Но это решительно не Что происходит через мою голову, когда я читаю код.

+0

Вблизи того, что я научился делать: приятно, чтобы это подтвердилось как подход, используемый другими. – mas

1

Я не носителем английского языка, и я также не считаны код, но вот как бы я это сделать:

= -> равно
== -> равно
& - > побитовое и
& & -> и
& д -> адрес

Я прочитал * d, d-> d_name, d.d_name как "d"/"d" d_name, как это должно быть ясно из контекста.

9

Я произношу это как:

d = emalloc(sizeof(*d)); 

ди размера равен й таНос звёздного дуанта

d->d_name = estrdup(name); 

ди стрелок Ди подчеркивает имя равного эи перемешайте имя повторов»

Но я бы не назвал эту лучшую практику. Я не объявляю скобки, кроме случаев, когда это было бы неоднозначно, например, с приоритетом оператора. Я произношу почти все другие пункции. Я на самом деле читать == как «равный равным»

+0

+1 Для чтения '==' as "equal equal". Я тоже это делаю ... :) – Miguel

4

Я не английский родной, но те термины, которые я вижу используется больше всего:

'=' - assign to 
'==' - equals 
d->d_name member of a struct 
&d - address of d 
& - bitwise and 
&& - logical and (or just "and" for short) 
*d - dereference d, or in case of *d = x "assign x to what is being pointed by d" 

Что касается вашего примера:

d = malloc(sizeof(*a)); 

Выделите (malloc) объем памяти, равный размеру того, на что указывает a, и присвойте результат d.

d->d_name = estrdup(name); 

Присвоить к элементу d_name из D значение, возвращаемое вызовом estrdup с именем в качестве параметра.

1

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

Для слов и идентификаторов я просто произношу их так, как они написаны.

Для символов, я не думаю, что существует жесткое и быстрое правило. Если оператор, произнесенный, как написано, имеет смысл, я делаю это. Например, == Я произносил бы, когда равны равны. Там нет никакой двусмысленности, и для большинства программистов она течет.

Операторы вроде - >, хотя я бы просто сказал, что доступ к члену. Говорить «тире больше, чем» правильно, но я предполагаю, что я получу несколько забавных взглядов.

10

ASCII Pronunciation Rules for Programmers имеет большой список, ну, правила произношения ASCII ... не так лучший способ произнести указатель, обязательно, но, по крайней мере, как вербализовать символы.

+1

+1 Мне нравятся правила, они могут пригодиться когда-нибудь. Честно говоря, я никогда не использовал произношение какого-либо кода (pythoh, C, C++, ...). То, что я обычно делаю, просто описывает код в словах: allocate 'dee', задает член имени в dee ... – SashaN

1
d = emalloc(sizeof(*d)); 

ди равна й таНос SIZEOF звезды Ди

d->d_name = estrdup(name); 

Ди имени исх Ди равно й размешать DUP имя

if (d -> d_name == NULL) 

если Ди иого имя дуанта нуль

или

если d эи реф Ди имя равно нулю

2

Я обычно использую слово/группу слов, в которых уже используются для синтаксиса С элементов, если мне нужно произносить/читать вслух С code-

например

* д = значение по адресу памяти в D

d-> d_name = значение по адресу памяти указал на некоторое смещение от базового адреса в D (это значение может быть интегральное значение или другое значение адреса!)

& д = адрес памяти значения d

х = у = значение х обновленных и измененных со значением в у.

х == у = сравнить значение х со значением у

Когда я делал это я нашел, что «» произнося следующим языком C конструкцию будет сложно/интересно:

union 
{ 
    int a; 
float b; 
} 

функции указатели,

, преобразование типов

-Ad.

+0

В случае, если кто-то посчитает, для ваших трех сложных случаев я бы сказал: «union open-brace int a полу-двоеточие с плавающей запятой b с запятой, а не с запятой "; «функция принимает <безотносительно: например, int argc и звездную звезду charv> и возвращает "; и "a равно b, отличное от int" соответственно. –

1

Обычно я называю «=» и «==» равным «равно».

Существует небольшая двусмысленность, так как я очень редко использую «=» в контексте, где используется его результат, или «==» в контексте, где его результат не используется. Если бы кто-то пришел, возможно, в коде, который я читал, что я не писал, я мог бы сказать «если один-равно b», или «для i равно j полуколонии i равнозначно j полуколонии плюс- плюс j. Надеюсь, это не ошибка ».

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

Если бы я диктовал много кода (например, программирование на пару), я обычно ожидал бы его прочитать, поскольку он был напечатан, поэтому любые ошибки могут быть обнаружены. Если бы моя двусмысленность часто путала машинистку и тратила время, тогда я ожидал, что просто соглашусь на месте встречи. Намного легче, чем формировать консенсус среди всех программистов C/C++/Java/C# в мире.

2

IMO, вот лучший способ, чтобы прочитать следующее (поскольку PHP обеспокоен):

= "является (в настоящее время) установлен в положение"

== «является (в настоящее время) равно»

=== "это (сейчас) идентична"

  • Вызов = Значение «установлено в» помогает избежать неправильного использования.
  • Слово «сейчас» является необязательным, но напоминает начинающих программистов (как и я) динамического характера ценностей.
3

(Говоря медленно и четко.) Я собираюсь прочитать вам какой-то текст, по одному персонажу за раз. Я буду читать это медленно и четко, немного останавливаясь после каждого персонажа. Я попрошу вас прочитать его мне, когда я закончу, так что слушайте внимательно, но продолжайте идти, если вы допустили ошибку. Все буквы имеют строчный регистр и содержат знаки препинания повсюду. Вы готовы? (Подождите подтверждения.)

(отрегулируйте скорость между медленными и чрезвычайно медленными на основе обратной связи звука.) d пробел равно пробелу emalloc левая скобка размер слева скобка звездочка d правая скобка правая скобка полуколона new- line d dash больше чем d имя подчеркивания пространство пробела равно пространство estrdup левая скобка имя правая скобка полуколонна

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

+0

Ты меня загипнотизировал на полпути ...;) – sjngm

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