Всем привет.
Вот сижу и программирую клиента для одного IM и в одной функции получился извращенный до нельзя код. Хотелось бы чтобы вы предложиле более красивую реализацию данного кода:
Здравствуйте, iix, Вы писали:
iix>Всем привет. iix>Вот сижу и программирую клиента для одного IM и в одной функции получился извращенный до нельзя код.
В каком смысле? В том что в нем ошибка на ошибке?
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Я бы сделал просто в таком стиле. Просто, но со вкусом:
KA>if (!....){ KA> DbgPrint ... KA> goto error; KA>} KA>... KA>error: KA>if (pingthrd) { KA> TerminateThread(pingthrd,0); KA> CloseHandle(pingthrd); KA>}
Жуть. Даже для С. Можно сделать функцию, что-то Deinintialize. И в ней по проверке handle==0 убивать. И без всяких goto. Сразу return.
KA>Если не просто и это С++ то исключения.
Неизвестно что имелось ввиду. Mutex если уже был создан, должен давать ошибку, и это есть нормальная ситуация. Он для этого и создается. А может это и исключительный случай. Без знания того что здесь автор хотел, не скажешь.
Поэтому лучше RAII.
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, iix, Вы писали:
iix>>Всем привет. iix>>Вот сижу и программирую клиента для одного IM и в одной функции получился извращенный до нельзя код. GZ>В каком смысле? В том что в нем ошибка на ошибке?
Да какойто пароноидальный код получился. Что со мной творится. Неужели я стал параноиком после прочтения книги Windows для профессионалов. Эти CloseHandel меня уже запарили. Последнии мой разработки так и кишат этими проверками. Черт кажется я потихоньку схожу с ума
Здравствуйте, GlebZ, Вы писали:
GZ>Неизвестно что имелось ввиду. Mutex если уже был создан, должен давать ошибку, и это есть нормальная ситуация. Он для этого и создается. А может это и исключительный случай. Без знания того что здесь автор хотел, не скажешь. GZ>Поэтому лучше RAII.
Просто хотел спросить как иначе но красивше без этих if внутри if написать данную функцию. И как боротся с таким количеством проверок. Чтоли принимать таблетки против паранойй
Может вам выслать еще одну функцию там также проверка за проверкой. Просто последнее время при программировании я слежу за выходными значениями каждой функции. Раньше было круто не парился я с этими проверками и код был компактнее а сейчач даже незнаю.............
Здравствуйте, iix, Вы писали:
iix>Здравствуйте, GlebZ, Вы писали:
GZ>>Неизвестно что имелось ввиду. Mutex если уже был создан, должен давать ошибку, и это есть нормальная ситуация. Он для этого и создается. А может это и исключительный случай. Без знания того что здесь автор хотел, не скажешь. GZ>>Поэтому лучше RAII. iix>Просто хотел спросить как иначе но красивше без этих if внутри if написать данную функцию. И как боротся с таким количеством проверок. Чтоли принимать таблетки против паранойй
Здравствуйте, Кирилл Лебедев, Вы писали:
КЛ>Здравствуйте, GlebZ, Вы писали:
GZ>>
GZ>> m_handle=0;
GZ>>
КЛ>Эта строка лишняя. CreateMutex и _beginthreadex сами инициализируют handle так, как надо.
Да не в етом суть вопроса пусть хот десять раз напищет a=a+1. Здесь вопрос не в оптимизации кода а в красоте и оригинальности
Здравствуйте, iix, Вы писали:
iix>Всем привет. iix>Вот сижу и программирую клиента для одного IM и в одной функции получился извращенный до нельзя код. Хотелось бы чтобы вы предложиле более красивую реализацию данного кода:
Во, ПК, гляди (!) как искусно "юзаются" твои любимые деструкторы и RAII. Тут хоть кол на голове теши, но пока в библиотеке не напишут грамотную обертку народ будет мучаться, плакать, но жрать этот долбанный кактус.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, iix, Вы писали:
iix>Здравствуйте, iix, Вы писали:
iix>Может вам выслать еще одну функцию там также проверка за проверкой. Просто последнее время при программировании я слежу за выходными значениями каждой функции. Раньше было круто не парился я с этими проверками и код был компактнее а сейчач даже незнаю.............
Делай обертки. Делай. Это окупится. Меньше отладки будет.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.