Принудительная диагностика
Dec. 20th, 2007 20:06Иногда возникает брутальное желание запретить коммит кода, если в нём нет или мало ассертов.
С одной стороны - учить пользоваться вилкой глупо если код как пюре.
Но ведь становятся же люди веселее, когда берут образ веселого человека?..
[Poll #1109174]
С одной стороны - учить пользоваться вилкой глупо если код как пюре.
Но ведь становятся же люди веселее, когда берут образ веселого человека?..
[Poll #1109174]
no subject
Date: Dec. 20th, 2007 17:19 (UTC)no subject
Date: Dec. 20th, 2007 18:07 (UTC)но исхожу из того, что конкретно
1) в консольной игре трудно ввести не то, и
2) на данные после тулзов типа сборщика ассетов вполне нужно ставить ассерты.
no subject
Date: Dec. 20th, 2007 17:33 (UTC)- assert на входе в функцию на проверку допустимого состояния экземпляра класса (если применимо)
- assert на входе в функцию на проверку аргументов (за исключением time critical самого низкого уровня)
- assert на выходе на адекватность результата и его соответствие новому состоянию моделя
- assert в процессе выполнения функции в узловых точках.
В среднем и получается порядка одного на 7 строк (это при условии того, что из этих 7 строк еще 2 - на комментарии).
P.S. assert на _возможный_ код возврата из функций (например, assert(file_stream != NULL) - недопустим, ессно.
no subject
Date: Dec. 20th, 2007 18:08 (UTC)с комментариями или без - неважно :)
no subject
Date: Dec. 20th, 2007 17:38 (UTC)no subject
Date: Dec. 20th, 2007 18:09 (UTC)а вот комментарии - будем.
если человек двадцать строк комментариев написал - пусть хоть три ассерта-то напишет к ним!
no subject
Date: Dec. 20th, 2007 17:53 (UTC)Вообще лично у меня получается так, что ассерты - это тоже часть программы и, в частности, требует времени на отладку (т.е. может содержать ошибки). :)
no subject
Date: Dec. 20th, 2007 18:10 (UTC)Самое ужасное - это когда assert (который исчезает в релизе) пишут вместо verify (который не проверяется но работает в релизе).
В этом смысле хорош тот ассерт, который рандомно и по нескольку раз вычисляет выражение, я считаю! :))
no subject
Date: Dec. 20th, 2007 18:31 (UTC)Поэтому надо не ассерты требовать, а изживать пидарастию.
Как ее изживать, я не знаю.
Бывает, полгода всего код не ревьюишь, а там заново начинается!!!
no subject
Date: Dec. 21st, 2007 00:54 (UTC)Но мышцы лица устали молчать!
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: Dec. 20th, 2007 18:53 (UTC)1) я знаю, что в моём коде вероятна херня.
2) я знаю, что в коде пользователя моего апи вероятна херня.
3) я знаю, что в коде сторонней библиотечки вероятна херня.
первого следует не допускать, а второе и третье воспитываются культурой кодинга. принудительно - никак.
no subject
Date: Dec. 20th, 2007 21:08 (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: Dec. 21st, 2007 00:57 (UTC)Но ведь можно и помочь!
Про "не допускать" - верю.
Но практика показывает, что те, кто пишут ассерты, на них как раз не наступают.
А те, что не пишут - обычно падают сразу как только в сборщике ресурсов что-то изменилось "нечаянно" (ц).
Ну или там камера в QNaN скакнула :)
no subject
Date: Dec. 20th, 2007 19:34 (UTC)no subject
Date: Dec. 21st, 2007 00:59 (UTC)Например, assert(("WTF?!", 0)).
Вопрос не в культуре - вопрос в принудительном воспитании!
(no subject)
From:no subject
Date: Dec. 20th, 2007 19:57 (UTC)Где вариант "В любой функции - минимум один ассерт (включая inline в h)"?
no subject
Date: Dec. 20th, 2007 20:02 (UTC)(no subject)
From:no subject
Date: Dec. 20th, 2007 20:04 (UTC)no subject
Date: Dec. 21st, 2007 01:00 (UTC)no subject
Date: Dec. 20th, 2007 21:06 (UTC)1. данные.
если отрубать педерастию на корню внизу, то наверху не надо ассертов ставить. бывает, что в самой игре не надо ставить. бывает что можно где-то.
2. простые глобальные концепты
если уже работают, то не бажат
3. сложные локальные алгоритмы
если сложно, то можно и ассерты, можно и на цифры.
зачем тут принудительные ассерты неясно. либо просится, либо просим нахуй.
no subject
Date: Dec. 21st, 2007 01:00 (UTC)т.е. камеру в QNaN отправляют - и voila!
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: Dec. 20th, 2007 23:58 (UTC)например какая то команда сделала некий модуль
далее технический лидер дает указание (обычно в пятницу в конце дня) потратить час на code review всем остальным командам
в результате если код не удовлетворяет тому же Code Policy всю команду жестко имеют, в плоть до полного переписывания кода
в проекте 5 команд по 5-6 человек
тулза которой пользуемся http://www.atlassian.com/software/crucible/
no subject
Date: Dec. 21st, 2007 01:01 (UTC)Не уверен насчет 2200 USD, впрочем, но выглядит очень симпатично.
Вы долго её юзаете?
Как ощущения? В плане недостатков, естественно.
(no subject)
From:no subject
Date: Dec. 21st, 2007 08:54 (UTC)no subject
Date: Dec. 21st, 2007 09:14 (UTC)no subject
Date: Dec. 21st, 2007 11:29 (UTC)no subject
Date: Dec. 21st, 2007 14:18 (UTC)no subject
Date: Dec. 21st, 2007 11:44 (UTC)На TerminateProcess начал смеяццо ( наверное помогло что-то понять в жизни ).
best regards
ps Жгите! Вас давно не было слышно в жж.
no subject
Date: Dec. 24th, 2007 09:56 (UTC)Обучать людей надо. И не только методами "пчелиных танцев" (через механическое подражание).
no subject
Date: Apr. 12th, 2008 23:57 (UTC)— А это что у тебя такое?, — зевая, осведомился мастер.
— Ну как же! Вы же сами видите: вот тут я ..., а потом я ..., а потом я считаю среднее отклонение от получившегося.
— А где проверка на деление на ноль?
— Учитель, зачем она здесь? я не буду вызывать эту функцию для пустых множеств.
Физиономию мастера Гоу Ту перекосила ехидненькая гримаска. Фроу Кэтч отработанным движением выдернул свой блокнот: именно с такими добрыми-добрыми глазами его учитель изрекал наиболее омерзительные истины.
— Если не ставишь защиту от дурака, то сам и оказываешься тем дураком, от которого была необходима защита.
Учитель быстро вышел из комнаты ("чай пить небось пошёл", злобно подумал Фроу Кэтч), а его ученик засунул блокнотик в карман и набарабанил в начало функции:
//A kto vyzyvet eto s n==0, tot sam durak
no subject
Date: Feb. 14th, 2009 22:31 (UTC)