Re[8]: Куды котимся?
От: Vzhyk  
Дата: 09.09.08 20:28
Оценка:
Геннадий Васильев пишет:
>
>
>> > V>Ну и вопрос по сути. Вы получили по close не 0, что делать будете?
>> > V>Жду рецепта "серебрянной пули".
>> > Возвращаем ошибку в вышестоящий слой.
> V>Поехали дальше, а что сделает вышестоящий слой?
>
> Вышестоящий слой для развлечения эту функцию вызывает? Если так, то ничего.
А если серьезно?
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Куды котимся?
От: Cyberax Марс  
Дата: 09.09.08 20:30
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> V>А вы попробуйте так писать код...

>> Исключения рулят.
V>Не везде и не всегда
Они как раз необходимость проверки всего убирают.

>> V>Жду рецепта "серебрянной пули".

>> Возвращаем ошибку в вышестоящий слой.
V>Поехали дальше, а что сделает вышестоящий слой?
Возвратит ошибку в вышестоящий слой
Sapienti sat!
Re[8]: Куды котимся?
От: Vzhyk  
Дата: 09.09.08 20:40
Оценка:
Cyberax пишет:
>
>
>> > V>А вы попробуйте так писать код...
>> > Исключения рулят.
> V>Не везде и не всегда
> Они как раз необходимость проверки всего убирают.
Напиши простой враппер на FILE*? Где fclose делать будешь?
Ну и сами исключения не везде есть еще.

>

>> > V>Жду рецепта "серебрянной пули".
>> > Возвращаем ошибку в вышестоящий слой.
> V>Поехали дальше, а что сделает вышестоящий слой?
> Возвратит ошибку в вышестоящий слой
И так до господа бога дойдем?
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Куды котимся?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 09.09.08 20:55
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> Хм. А я так и пишу... Особенно вспомогательную дребедень всяческую, от

>> которой требуется получить только два результата: успех/ошибка.
V>Т.е. на всякий чих проверяете коды возврата?

Почему? В некоторых случаях можно предполагать, что если предыдущая операция успешна, то и последующая будет успешной с приемлемо высокой вероятностью. Но в некоторых — нельзя. Например, операции записи в сокет, файл, реестр — вовсе не обязаны завершаться успешно, даже если предыдущая операция вернула OK. А значит, всё это надо проверять на сбой. И никуда от этого не денешься.

Кстати, C-шный fclose тоже можно не проверять, если а) предварительно сделать fflush и б) программа корректна и не корёжит дескрипторы.

>> С большой вероятностью удаление прошло бы успешно

>> или вернуло бы код какого-нибудь FILE_NOT_EXIST, что тоже есть успех для
>> такой операции.
V>А если не прошло?

Возвращаем false. Значит, этот файл, даже если он обнаружится, нельзя считать корректным, поскольку запись в него не удалась. По идее, функция должна возвращать true только если все операции записи прошли успешно. Можно и не чистить за собой мусор, но тогда обнаруженный файл не может считаться корректным.

>> V>Жду рецепта "серебрянной пули".

>> Не дождёшься.
V>Вот и я об этом. Что решение и выбор подхода зависит от конкретной
V>задачи в конкретном месте.

Именно. И именно в случае тестового задания на собеседовании имеет смысл показать полную обработку ошибок.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[11]: в очередной раз о собеседованиях
От: olegkr  
Дата: 09.09.08 20:56
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Хм. Значит, никогда не приходилось преобразовывать выражения вот так:

Вот оно как научно называется...
Re[11]: в очередной раз о собеседованиях
От: olegkr  
Дата: 09.09.08 20:59
Оценка:
Здравствуйте, mymuss, Вы писали:

M>Веб-ваятеля? Запросто. (Кроме разве что рыбных мест вроде NY, SFBA etc)

Ага, простого веб-ваятеля индуса.

M>Ну, положим на W2, так мы их и там на постоянку нанимаем.

Вот именно. А это + налоги, страховки, 401К и офис, который, кстати, и контрактеру нужен.
Re[12]: в очередной раз о собеседованиях
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 09.09.08 21:00
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> Хм. Значит, никогда не приходилось преобразовывать выражения вот так:

>>
>> if (!a || !b) ==> if (!(a && b))
>>
>> ?
V>Прекрасно. Но в чем смысл сего действа? Эстетическое удовлетворение?

Отнюдь. Например, так можно упростить логические условия и в конечном итоге, устранить какие-то ошибки. Понятно, что именно этот пример не имеет никакого смысла, кроме иллюстративного.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[12]: в очередной раз о собеседованиях
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 09.09.08 21:08
Оценка:
Здравствуйте, olegkr, Вы писали:

ГВ>>Хм. Значит, никогда не приходилось преобразовывать выражения вот так:

O>Вот оно как научно называется...

Ага. Может преподаваться в курсе дискретной математики. Чтобы потом оказаться, на первый взгляд, совершенно естественным.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Куды котимся?
От: Vzhyk  
Дата: 09.09.08 21:13
Оценка:
Геннадий Васильев пишет:
>
> V>Т.е. на всякий чих проверяете коды возврата?
>
> Почему? В некоторых случаях можно предполагать, что если предыдущая
> операция успешна, то и последующая будет успешной с приемлемо высокой
> вероятностью.
Вероятность здесь неприменима. Применима только Ваша уверенность что
скорее всего будет или не будет успешна, а это исключительно
субъективная вещь и притом зависит от опыта.


> Но в некоторых — нельзя. Например, операции записи в

> сокет, файл, реестр — вовсе не обязаны завершаться успешно, даже если
> предыдущая операция вернула OK. А значит, всё это надо проверять на
> сбой. И никуда от этого не денешься.
Но исходя из опыта и самой задачи я могу предположить, что в конкретном
мете операция завершится успешно.

А вот когда опыта мало, параноидальный код выходит.

>

> Кстати, C-шный fclose тоже можно не проверять, если а) предварительно
> сделать fflush и б) программа корректна и не корёжит дескрипторы.
Ага, только вот не корежит ли кто... и т.д. Ну и еще не забыть под какой
платформой мы находимся, ой нюансов всплывает.

>

> Возвращаем false. Значит, этот файл, даже если он обнаружится, нельзя
> считать корректным, поскольку запись в него /не удалась/. По идее,
> функция должна возвращать true только если все операции записи прошли
> успешно. Можно и не чистить за собой мусор, но тогда обнаруженный файл
> не может считаться корректным.
вы правы, но в реальности часто выгоднее допустить подобный недочет в
программе, именно по причине редкости подобной проблемы, чем увеличить
время разработки, особенно, если программа не для управления атомной
станцией.
Ну а решений данной ситуации, еще можно напридумывать и различных.

>

> Именно. И именно в случае тестового задания на собеседовании имеет смысл
> показать полную обработку ошибок.
Это уже Ваше видение, я противник такого. Собеседование — практически
всегда стресс и гарантировано, практически каждый человек наделает ошибок.
Мне важнее увидеть, как человек сможет работать, что он делал и как и
почему, или если опыта нет, как он будет решать определенную задачу,
конечно в плотной связи с программированием.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Дык это же вопросы для junior.
От: Grizzli  
Дата: 09.09.08 21:16
Оценка:
S>ИМХО такие вопросы имеет смысл задавать студентам, у которых опыта нет ни в чем, кроме как зубрить формулы для удовлетворения преподавательских бзиков.
S>Если человек с опытом реальных разработок и претендует на более высокую должность, думаю стоит задавать вопросы более обобщеного характера (технологии, платформы, паттерны и т.п.).

Более того, опытный разработчик на формуле круга пошлет нахрен собеседователя. Ибо не экзамен в вузе сдавает. И будет прав.
Re[13]: в очередной раз о собеседованиях
От: Vzhyk  
Дата: 09.09.08 21:17
Оценка:
Геннадий Васильев пишет:
>
>> > ?
> V>Прекрасно. Но в чем смысл сего действа? Эстетическое удовлетворение?
>
> Отнюдь. Например, так можно упростить логические условия и в конечном
> итоге, устранить какие-то ошибки. Понятно, что именно этот пример не
> имеет никакого смысла, кроме иллюстративного.
Но и более сложные условия уже нетривиально упрощать.
Но ты опустил вторую часть моего поста о реальных задачах и проектах. А
вот здесь часто выгоднее (именно выгоднее) оставить как есть и не трогать.
Posted via RSDN NNTP Server 2.1 beta
Re[9]: Куды котимся?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 09.09.08 21:50
Оценка: :)
Здравствуйте, Vzhyk, Вы писали:

V>Вероятность здесь неприменима. Применима только Ваша уверенность что

V>скорее всего будет или не будет успешна, а это исключительно
V>субъективная вещь и притом зависит от опыта.

Нет. Именно вероятность, которая и становится основой "уверенности". Например, вероятность отказа памяти достаточно мала, чтобы в большинстве случаев обойтись без дублирования и мажоритарной организации вычислений.

V>Но исходя из опыта и самой задачи я могу предположить, что в конкретном

V>мете операция завершится успешно.
V>А вот когда опыта мало, параноидальный код выходит.

Не надо обобщать. Наличие проверок не всегда означает, что к коду можно приклеить ярлык "параноидальный". И опыт — тоже не всегда надёжный советчик.

>>

>> Кстати, C-шный fclose тоже можно не проверять, если а) предварительно
>> сделать fflush и б) программа корректна и не корёжит дескрипторы.
V>Ага, только вот не корежит ли кто... и т.д. Ну и еще не забыть под какой
V>платформой мы находимся, ой нюансов всплывает.

Угу. Всплывёт.

V> вы правы, но в реальности часто выгоднее допустить подобный недочет в

V>программе, именно по причине редкости подобной проблемы, чем увеличить
V>время разработки, особенно, если программа не для управления атомной
V>станцией.
V>Ну а решений данной ситуации, еще можно напридумывать и различных.

Э... Зависит от многих факторов. Понятно, что "в реальности" требования к качеству зачастую снижаются. Но как тебе сказать... Собеседование, это своего рода игра. В сущности, игра несложная. Если даже в неё играть по правилам "тяп-ляп", то в этой самой пресловутой "реальности" всё может оказаться гаже и плоше.

>>

>> Именно. И именно в случае тестового задания на собеседовании имеет смысл
>> показать полную обработку ошибок.
V>Это уже Ваше видение, я противник такого. Собеседование — практически
V>всегда стресс и гарантировано, практически каждый человек наделает ошибок.

Ошибки ошибкам рознь. Можно забыть последовательность параметров или название метода. То о чём я здесь говорю — принципиальные вещи.

V>Мне важнее увидеть, как человек сможет работать, что он делал и как и

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

Ну, если бы я увидел тест без проверок открытия/записи, то однозначно бы засомневался в кандидате. Что он показывает? Что может быстро-быстро прилепить одну команду к другой в более или менее правильном порядке?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[14]: в очередной раз о собеседованиях
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 09.09.08 21:56
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> V>Прекрасно. Но в чем смысл сего действа? Эстетическое удовлетворение?

>>
>> Отнюдь. Например, так можно упростить логические условия и в конечном
>> итоге, устранить какие-то ошибки. Понятно, что именно этот пример не
>> имеет никакого смысла, кроме иллюстративного.
V>Но и более сложные условия уже нетривиально упрощать.

Нетривиально, но принципы-то остаются одними и теми же.

V>Но ты опустил вторую часть моего поста о реальных задачах и проектах. А

V>вот здесь часто выгоднее (именно выгоднее) оставить как есть и не трогать.

Одно другого не исключает. Если код не надо менять, то его и не меняют. А если надо менять, то аппарат ДМ вполне может пригодиться.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[12]: в очередной раз о собеседованиях
От: mymuss  
Дата: 09.09.08 21:56
Оценка:
Здравствуйте, olegkr, Вы писали:

M>>Веб-ваятеля? Запросто. (Кроме разве что рыбных мест вроде NY, SFBA etc)

O>Ага, простого веб-ваятеля индуса.

Да хоть кенийца. Если он хорошо работает то какая разница кто он по национальности?


M>>Ну, положим на W2, так мы их и там на постоянку нанимаем.

O>Вот именно. А это + налоги, страховки, 401К и офис, который, кстати, и контрактеру нужен.

Это грязными, сверху работодатель платит копейки налогов, основная нагрузка на сотрудника. Офис и так есть, страховка ну пусть +2-3К в год, 401К тоже мелочь пару процентов, да и не все сотрудники туда отчисляют.

Ну пусть это все добавит 10%, это несравнимо с затратами времени ПМ-ов на координацию работы с оффшорной командой.
Re[3]: Дык это же вопросы для junior.
От: mymuss  
Дата: 09.09.08 22:00
Оценка:
Здравствуйте, Grizzli, Вы писали:

G>Более того, опытный разработчик на формуле круга пошлет нахрен собеседователя.


Та да, правильно сделает. Людей с избыточным самомнением я, например, в команде видеть не хочу.
Re[10]: в очередной раз о собеседованиях
От: mymuss  
Дата: 09.09.08 22:02
Оценка:
Здравствуйте, olegkr, Вы писали:

ГВ>>На вскидку: теория множеств, булева алгебра. Это всё так, мимо проходили, да?

O>Мимо. Когда-то учили. Не пригодилось за 15 лет, хотя чем только ни приходилось заниматься.

Неужели за 15 лет с SQL не встречались?
Re[4]: Дык это же вопросы для junior.
От: Grizzli  
Дата: 09.09.08 22:07
Оценка: 1 (1) +1
M>Та да, правильно сделает. Людей с избыточным самомнением я, например, в команде видеть не хочу.

не, я понимаю, хочется найти специалиста со знаниями синьера, и самомнением джуниора. Не знаю как в индии, но в россии по этому поводу говорят и на **й сесть, и рыбку съесть.
Re[3]: Дык это же вопросы для junior.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 09.09.08 22:18
Оценка:
Здравствуйте, Grizzli, Вы писали:

G>Более того, опытный разработчик на формуле круга пошлет нахрен собеседователя. Ибо не экзамен в вузе сдавает. И будет прав.


За всех не расписывайся, ладно?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Дык это же вопросы для junior.
От: mymuss  
Дата: 09.09.08 22:20
Оценка: 3 (1)
Здравствуйте, Grizzli, Вы писали:

M>>Та да, правильно сделает. Людей с избыточным самомнением я, например, в команде видеть не хочу.


G>не, я понимаю, хочется найти специалиста со знаниями синьера, и самомнением джуниора. Не знаю как в индии, но в россии по этому поводу говорят и на **й сесть, и рыбку съесть.


Безотносительно к регалиям и положению на служебной лестнице. Если у человека зашкаливает самомнение и гонор брызжет из ушей, то такой человек в коллективе принесет больше вреда чем пользы. ИМХО отказ на собеседовании решать простые задачи однозначно сигнализирует об этом. (Могу, конечно ошибаться, я все-таки не психолог)

Кстати, тут была недавно тема, кандидат отказался тесты писать, дескать простые слишком, оскорбляют его достоинство.
Re[6]: Куды котимся?
От: landerhigh Пират  
Дата: 09.09.08 22:30
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Зависит от контекста. В случае простой функции, которая должна вернуть true/false, вернул бы false, и попытался бы удалить только что созданный недозаписанный файл. С большой вероятностью удаление прошло бы успешно или вернуло бы код какого-нибудь FILE_NOT_EXIST, что тоже есть успех для такой операции.

RSDN в своем амплуа. Опять решаем сферические задачи в вакууме. А потом удивляемся, откуда берутся "ошибки записи при чтении".
А если файл на флешке, которую только что вытащили, тоже удалять будем, да?
Что там возвращает close — это, по большому счету, уже не наше дело. Может, файловой системе пришел зелененький и мерзкий, но это нужно оставить на откуп ОС.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.