И еще о поддерживаемости кода
Mar. 4th, 2009 05:36 pmВдогонку к этой
и немного этой записям. И еще немного к боковому хвосту у Витуса.
Один из типичных приемов собеседования с программистами - показ зубодробительной конструкции на языке, на котором собирается программировать соискатель, и вопрос, что она делает. Наиболее часто мне попадался C-шный пример, когда вместо переменной объявлялась функция.
Так вот, господа. Когда вам показывают такой пример (если он выходит за пределы разумного понимания языка и знания ключевых слов или общепринятых идиом), то скорее всего - одно из двух.
1. Собеседующий пытается срезать соискателя. То есть самоутвердиться. Вам нужен такой начальник?
2. Код реально используется в проекте? Вы действительно хотите это поддерживать?
Да, и главное, без чего пп.1-2 не действуют. Понимать, что предъявленный пример собой представляет - все-таки надо. Чтобы было ясно, что объявлена таки переменная, а не функция.
и немного этой записям. И еще немного к боковому хвосту у Витуса.
Один из типичных приемов собеседования с программистами - показ зубодробительной конструкции на языке, на котором собирается программировать соискатель, и вопрос, что она делает. Наиболее часто мне попадался C-шный пример, когда вместо переменной объявлялась функция.
Так вот, господа. Когда вам показывают такой пример (если он выходит за пределы разумного понимания языка и знания ключевых слов или общепринятых идиом), то скорее всего - одно из двух.
1. Собеседующий пытается срезать соискателя. То есть самоутвердиться. Вам нужен такой начальник?
2. Код реально используется в проекте? Вы действительно хотите это поддерживать?
Да, и главное, без чего пп.1-2 не действуют. Понимать, что предъявленный пример собой представляет - все-таки надо. Чтобы было ясно, что объявлена таки переменная, а не функция.
no subject
Date: 2009-03-04 04:06 pm (UTC)Зачем нужно вот такое макроопределение
#define MACRO(a,b) (&((b*)NULL)->a)
Работает как из пушки :)
no subject
Date: 2009-03-04 04:10 pm (UTC)void print(std::vector& v)
{
for (unsigned i = 0; i < v.size(); i++)
printf("%d\n", v[i]);
}
Или чем STL-ный vector хуже чем имплементация списков из /usr/include/linux/list.h?
P.S. В плюсовом синтаксисе могу ошибаться :) Это не на подкорке
no subject
Date: 2009-03-04 05:04 pm (UTC)Из той самой, из которой нужно пристрелить того, кому эта информация в программе понадобилась?
no subject
Date: 2009-03-04 08:45 pm (UTC)no subject
Date: 2009-03-05 11:44 am (UTC)no subject
Date: 2009-03-04 07:36 pm (UTC)no subject
Date: 2009-03-05 04:39 am (UTC)no subject
Date: 2009-03-05 04:40 am (UTC)no subject
Date: 2009-03-05 09:53 am (UTC)offsetof— это стандартный макрос C/C++. Ему можно обращаться через нулевой указатель, поскольку он пишется к конкретному компилятору. Аналогичный макрос в пользовательском коде — неопределённое поведение (из-за разыменования нулевого указателя).