Шарь сэмплы уродливого кода и описания геневальных орхитехтурных решений. Опиши откуда пример.Начну. Видел подобное в прошивке под embeded (c++):1. bool needRestart = (timer == 0) ? true : false;2. java крудошлёпы, имея orm, порою обходили её и в сеттерах/геттерах и выполняли захардкоженные sql запросы. геттер проверял наличие записей, и, если они отсутствовали, добавлял новую, которую и возвращал. к этим методам обращались несколько тредов параллельно, которые могли ещё удалять/добавлять записи...3. webrtc/windows/audio/docapturethread https://goo.gl/jj1rtTк сожалению, приходится иметь дело с проектом начиная ревизии эдак с тысячной.
http://paste.ofcode.org/VESfCCDnSyBtJngjR8Eax6
>>899765 (OP)И что не так с последним примером? Хорошая функция.
Или у тебя баттхерт из-за goto? Так это главный цикл рилтайм-треда, можно позволить ни в чём себе не отказывать. К тому же, только вниз. Короче, как раз тот случай, когда goto можно. Но, вообще, break/continue/return в теле слабо отличаются от goto, если уж на то пошло. Они ничуть не более читабельны.
>>899787хуё-моё, RAII во все поляили готу на крайняк заюзали бы
>>899858goto порою не избежать, как и в этом случае. другое дело -- длина этого порева
>>899862Да вполне нормальный код, если это единственное место использование.>gotoну-ну
>>899765 (OP)>bool needRestart = (timer == 0) ? true : false;и что здесь пидор не так?
>>899908(timer==0)==true
>>899912а как тебе такое пидоран bool needRestart = !timer; ?просто ты наверное олимпиадная матоноблядь немогущая в самодокументирование кода, да и в разработку в принципе.за bool needRestart = (timer == 0) можно и напихать защеку.
>>899916Я понял что ты долбоеб, можешь не продолжать.
>>899919ок, школотрон, научишься кодить приходи, а пока сажи тебе.
>>899920Кек, мамкин кулкацкер учит людей программировать.
>>899926потыкать школотронов в их же ссанину это всегда приятно
>>899916А ты не думал, что таймер может быть флоатом?
>>899940верно подметил, скорее так оно и есть. насмехайтесь над опом!
>>899800Может быть, из-за этого.Строка 3889: _LockСтрока 3899: return при нулевом указателе. И ниже по коду так же.Строка 3944: _UnLockИ ниже что-то неладное с _Lock/_UnLock. Где-то есть парная функция, где-то return без неё.>>899765 (OP)>1. bool needRestart = (timer == 0) ? true : false;Надо контекст смотреть. timer может быть классом с перегруженным оператором ==. Максимум упростить можно до (timer == 0). И ещё объявить needRestart константой, она же, скорее всего, не будет изменяться.
>>899946Лол доставь еще этого кампьюта саенс граджуэйтед дауна.
>>899765 (OP)>1. bool needRestart = (timer == 0) ? true : false;Если timer - объект, то не вижу тут ничего странного.
>>899765 (OP)>bool needRestart = (timer == 0) ? true : false;И ч0? Явное обозначение своих намерений.
>>899940За сравнение флоатов на строгое равенство тоже можно и нужно пихать защеку
>>899765 (OP)>java крудошлёпы, имея orm, порою обходили её и в сеттерах/геттерах и выполняли захардкоженные sql запросы. геттер проверял наличие записей, и, если они отсутствовали, добавлял новую, которую и возвращал. к этим методам обращались несколько тредов параллельно, которые могли ещё удалять/добавлять записи...Это просто пиздец, как они до этого додумались?
>>900149Это вам надо напихать за щеку. Из кода ясно же что таймер:1 - переменная2 - счетчик, т.е. целого типа3 - не константаПросто какой-то программный таймер-счетчик.Если и когда он достигает нуля - нужен сброс чего-то, состояния или программы.
>>900153Каким образом он достигнет нуля? Там в пико-секундах разрешение?
>>900327Судя по коду этот счетчик отрабатывает один раз за цикл кода.Т.е. вначале проверили счетчик, если нуль - взвели флаг сброса, код этот флаг отработал, перезагрузив железку/сбросив какие-то состояния/переиницилизировав какие-то структуры.Ни о какой пикосекундной точности речи не идет - это внутренний программный счетчик, не факт что он вообще считает именно время, а не что-то другое. Средний таймаут - около одного оборота кода, может много больше (если счетчик завязан на внешние события, типа сетевого коннекта).В случае железки это похоже на софтWDT. Тоже так делал: каждый оборот кода декрементишь счетчик, инкрементишь только в каких-то критичных для работы железки местах.Каждый оборот проверяешь счетчик, если он обнулился, значит какой-то критичный участок давно не отрабатывал, т.е. что-то накрылось, дальнейшая работа без этого участка бессмысленна - надо уходит на рестарт, в надежде что проблема временная и внешняя (очень часто так и есть).Иногда встречаются железки, не выходящие из рестарта - там проблема уже явно не временная, и скорее всего в коде.Но основной смысл всего этого - чтобы железка не работала тогда, когда она может работать неправильно. Потому что иногда неправильная работа намного опаснее отказа работать, мало ли это станок какой-то или медоборудование: процедура безопасности перестала отрабатывать, и станок начинает шинковать тушки рабочих, весело жи.
>>900344Что такое цикл кода? Зачем называть таймером то, что не таймер?
>>900347Это таймер, но вот в каких единицах он считает время - хз. Может в единицах обращений к коду.Любой код так или иначе зациклен, иначе он не смог бы отработать больше одного раза.
>>900356Один и тот же кусок программной памяти может последовательно вызываться множеством тредов и ни разу - одним и тем же. Таймер не может считать время в обе стороны, как в >>900344К чему это все и как оно относится к исходному примеру?
>>900363Самое простое, что это может быть - это сброс самого таймера.Дотикали до нуля - сбросили таймер, и по новой.
>>899765 (OP)>1. bool needRestart = (timer == 0) ? true : false;Триал intellijIdea? lol
>>900644Со второй и третьей что не так?
>>900722Он просто интересное постит, наверно. Вторую явно профи писал. Чувствуется рука мастера.
>>900644Пацаны, поясните что с первой не так. Если это единственное место в программе, на которое влияет Зимнее/Летнее время, то вроде бы ок.
>>900913чувствуется рука гения#define LOOP(start, stop, iter, shift) for (int iter = start; iter != stop; iter += shift)LOOP(0, 10, i, 1) { puts(strings); }
>>900644Кокой пиздос на третьей, охуенно.
>>900921Выведет 11 строк.
>>900921int start = computation which returns 1;int end = computation which returns 0;// alot of codesLOOP(start, end, i 1) {// code}// oops
Заценивайте мой кодстайл. http://paste.ofcode.org/SxBJpaehZAE7LcuBLAptZZХочу написать инжектор криптолокера в другой процесс. Может быть даже буду копировать ДЛЛку целиком в адресное пространство процесса для лучшего стелсирования. Чтобы админ первым делом полез в список процессов, не увидел там процесс криптолокера и охуел.