Лучшее решение для того, чтобы все выглядело так, как того хочет большинство людей, - это использование анонимной функции:
alert('start');
var a = 'foo';
//lots of code
setTimeout(function(){ //Beginning of code that should run AFTER the timeout
alert(a);
//lots more code
},5000); // put the timeout here
Это, вероятно, самое близкое к тому, что просто делает то, что вы хотите.
Обратите внимание, если вам нужно несколько снов, это может привести к неприятным последствиям, и вам, возможно, придется пересмотреть свой дизайн.
Раньше я особо не думал об этом, но теперь понимаю, что не читаю промежуточно утверждения языка программирования, подобные приведенным выше, как английские слова. Я просто смотрю на них и знаю, что они делают.
И что интересно, это работает, даже когда я действительно не знаю, что делает функция. Например, я никогда раньше не сталкивался с emalloc (), но мой мозг все еще подсказывает мне, что это утверждение (вероятно) делает.
Если по какой-то причине (война? Национальная безопасность?) Я прочитал что-то вроде:
d->d_name = estrdup(name);
по телефону я бы сказал:
"вещь, на которую указывает d_name d члену присваивается результат вызывая estrdup с именем как параметр "
Но это подчеркнуто не то, что происходит в моей голове, когда я читаю код.
Правила произношения ASCII для программистов содержит большой список, ну, правила произношения ASCII ... не столько лучший способ произнести указатель, но, по крайней мере, как озвучивать символы.
Я произношу это так:
d = emalloc(sizeof(*d));
dee equal ee malloc size of star dee
d->d_name = estrdup(name);
dee arrow dee underscore name equal ee stretch dupe name "
Но я бы не стал называть никаких этого передового опыта. Я не произносю круглые скобки, за исключением случаев, когда они могут быть неоднозначными, например, с приоритетом оператора. Я произносю почти все остальные пунктиры. На самом деле я читаю ==
как «равно равно»
Я не являюсь носителем английского языка, но я вижу, что именно эти термины используются чаще всего:
'=' - 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 с именем в качестве параметра.
I normally use the word/group of words in which are already used for the C syntax elements if i need to pronounce/read aloud the C code-
e.g.
*d = value at memory address in d
d->d_name = value at memory address pointed at some offset from base address in d (this value could be a integral value or another address value!)
&d = memory address of value d
x=y = value of x updated and changed with value in y.
x == y =compare value of x with value of y
When i was doing this i found that 'pronouncing' following C language constructs would be tricky/interesting:
union
{
int a;
float b;
}
function pointers,
typecasts,
-AD.
Хм, никогда не думал об этом раньше.
Слова и идентификаторы я просто произносю так, как они написаны.
Что касается символов, я не думаю, что существует жесткое правило. Если оператор произносится так, как написано, имеет смысл, то я делаю это. Например, == я бы произнес как равный равный. Здесь нет двусмысленности, и для большинства программистов все идет по порядку.
Операторы вроде ->, хотя я бы сказал просто доступ к членам. Сказать «тире больше чем» правильно, но я предполагаю, что получу несколько забавных взглядов.
Я не носитель английского языка и не зачитываю код, но вот как я d сделать это:
= -> равно
== -> равно
& -> побитовое и
&& -> и
& d -> адрес
Я бы прочитал * d, d-> d_name, d.d_name как "d" / "d d_name", как должно быть ясно из контекста.
d = emalloc(sizeof(*d));
dee равняется ee malloc sizeof star dee
d->d_name = estrdup(name);
dee ref dee name равно ee desire dup name
if ( d -> d_name == NULL )
если dee ref имя dee равно null
или
, если dee ref имя dee равно нулю
Я обычно объявляю "=" и "==" как "равно".
Тут небольшая двусмысленность, так как я очень редко использую "=" в контексте, где используется его результат , или "==" в контексте, где его результат не используется. Если бы первое возникло, возможно, в коде, который я читал, но не писал, я мог бы сказать «если одно равно b», или «для i равно j точка с запятой i одно равно j точка с запятой плюс- плюс к. Я надеюсь, что это не ошибка ".
В любом случае, я довольно редко говорю код вслух в контексте, где двусмысленность действительно имеет значение. Так что то, как я обычно говорю, отличается от того, что я сделал бы в ситуации, когда мне нужно было быть действительно педантичным в отношении точной передачи текста.
Если бы я диктовал много кода (например, парное программирование), тогда я ' d обычно ожидает прочитать его в том виде, в каком он был напечатан, поэтому любые ошибки могут быть обнаружены. Если моя двусмысленность часто сбивала с толку машинистку и тратила время зря, то я ожидал, что сразу же согласую соглашение. Намного проще, чем когда-либо формировать консенсус среди всех программистов C / C ++ / Java / C # в мире.
ИМО, вот лучший способ прочитать следующее (что касается PHP):
= "(сейчас) установлено в"
== "(сейчас) равно"
=== "(сейчас) идентично"