Exceptions - это трюк, введённый, чтобы побороть лень программистов, забывающих проверить, возвратила ли функцию ошибку, и всё-таки остановить ошибочно работающую программу.
Естественно, идея себя не оправдала. Программисты ленивы активно и просто затыкают любые попытки заставить их делать лишнюю работу: пока ошибка не найдена, исправлять её не нужно.
В результате, большинство кодописателей ловят исключения и прячут их куда-нибудь подальше, где ни пользователи, ни администраторы, ни тестировщики, ни сами программисты их не увидят.
В mission critical software это запрещено юридически. В остальных областях программисты используют свою свободу не знать.
Всё когда-то бывает в первый раз. Сегодня прочитал первую программу на Коболе, чтобы понять, что дальше происходит с данными. Ничего страшного. И на этом можно программировать.
Естественно, идея себя не оправдала. Программисты ленивы активно и просто затыкают любые попытки заставить их делать лишнюю работу: пока ошибка не найдена, исправлять её не нужно.
В результате, большинство кодописателей ловят исключения и прячут их куда-нибудь подальше, где ни пользователи, ни администраторы, ни тестировщики, ни сами программисты их не увидят.
В mission critical software это запрещено юридически. В остальных областях программисты используют свою свободу не знать.
Всё когда-то бывает в первый раз. Сегодня прочитал первую программу на Коболе, чтобы понять, что дальше происходит с данными. Ничего страшного. И на этом можно программировать.
no subject
Date: 2015-08-20 09:23 pm (UTC)no subject
Date: 2015-08-20 09:52 pm (UTC)no subject
Date: 2015-08-21 12:11 pm (UTC)Но вот такой подход меня пугает, и мелкой слабостью (отдельных прогромистов) я его никак назвать не могу. По мне так это большая беда.
no subject
Date: 2015-08-21 12:58 pm (UTC)no subject
Date: 2015-08-21 11:37 pm (UTC)по моим подсчетам, хотя бы в половине проектов есть вменяемые архитекты, которые в состоянии настроить работу кодеров и за ними уследить.
ПМы не в счет, им лишь бы кто то за них сделал работу, а они получили бони.
Если узнаю, что ПМ получил образование как кауфман, в проект не иду.
no subject
Date: 2015-08-22 09:50 am (UTC)Кода пишут всё больше. Специалистов всё меньше.
no subject
Date: 2015-08-21 10:20 am (UTC)no subject
Date: 2015-08-21 11:27 am (UTC)no subject
Date: 2015-08-21 01:36 pm (UTC)Но в любом случае - разговор не об "за что платят программистам", а о том, что за всё время никому не удалось родить язык удобный, по крайней мере, для прикладного программирования.
no subject
Date: 2015-08-21 11:46 pm (UTC)Лет пять назад мой тогдашний босс мне сказал - ты чрезмерно концентрируешся на технической стороне, а нужно понимать проблему целиком! Тогда в мозгу нарисуется вся картинка, которую можно поделить по горизонтали и вертикали, спроектировать, а потом начать реализацию.
Половина ПМ-ов, к примеру, не понимают разницы между юнит тестами и интеграционными.
Почему? Да потому что им насрать на это! Давай-давай, сделай, что бы заработало. И рождается мутант, левел-бридж, когда для того, что бы заработало, на самом верху, в уровне презентации, делается запрос к базе. Причем разработчик знает, что за это его положено принародно кастрировать, но на нормальное решение ему не дают времени!
Другая проблема - у проектов нет хозяина с линейкой, железной, который должен только следить за дисциплиной и внутренним качеством и пацифиздить всех, кто лажает. Опять же принародно.
В скраме, к примеру, есть фаза ретроспективы, на которой каждый должен покаятся о своих ошибках принародно и больша такого не делать. Но эту фазу стараются убрать, что сводит на нет преимущества скрама. Почему? Да потому что рулить халтурно не получится!
no subject
Date: 2015-08-22 09:58 am (UTC)Вот не вижу в этом ничего полезного.
Половина ПМ-ов, к примеру, не понимают разницы....
"Половина" - это оптимизм.
Почему? Да потому что рулить халтурно не получится!
Да потому, что это присобачено сбоку и не может в принципе применяться правильно. Потому что идёт против людской психологии. А когда применяется, обязательно выразится в формализм и бюрократию.
Люди вынули технологии из контекста, не понимая основ. Теперь все радостно бегают, размахивая кривыми молотками.
no subject
Date: 2015-08-22 10:31 am (UTC)С языка снял.
> Теперь все радостно бегают, размахивая кривыми молотками.
Да молотки даже не то что бы кривые. Просто раньше молотком пользовался мастер. И молотки делались практически под руку конкретного мастера. И забивали им гвозди в дерево.
А сейчас понаделали копий таких молотков, пораздавали в руки ПТУ-шникам и отправили пластик к бетонным стенам приколачивать.
no subject
Date: 2015-08-21 11:35 pm (UTC)Код нужно не "писать", а проектировать. Проход по стеку и момент перехвата и обработки ексепшна должен определятся архитектором и неустанно контролироватся. А всякого рода урла от программирования тупо возвращает "правильное" вэлью, которое потом гарантированно забывает.
Кроме того, стектрейс в продакшн системе в сотню раз увеличивает понятность, ГДЕ стряслась жоппа, чисто по логам. Опять же, если мудло не объявило пустого кетч блока, а тут смотри пункт первый и второй. Лично я бил бы линейкой по пальцам, металлической, ребром.
no subject
Date: 2015-08-22 09:48 am (UTC)А физические наказания - это из области фантазий.
no subject
Date: 2015-08-22 08:44 am (UTC)Это ещё что. Приходится работать с программистом, который редкоиспользуемую функциональность пишет только когда тестировщик прямо ему укажет об её отсутствии (а до этого говорит "я всё закодил"). А если тестировщик проворонит, то когда пользователь в продакшене захочет использовать редкую фичу.
no subject
Date: 2015-08-22 10:27 am (UTC)no subject
Date: 2015-08-22 01:05 pm (UTC)Хочешь сделать хорошо - сделай сам ;-)
no subject
Date: 2015-08-22 08:54 am (UTC)По поводу эксепшенов пример из жизни. В одном софте есть уровень работы с БД, по разным (в том числе историческим) причинам не имеющий собственного настраиваемого логгера. Программисту было сказано "выведи для вызова каждой хранимой процедуры, при получении ошибки от БД, название процедуры и значения передаваемых аргументов". Программисту был дан один тестовый пример данных, при которых возникает ошибка, и желаемое сообщение. Тестирование выявило, что программист решил задачу только для этой одной хранимой процедуры - задачу вернули в кодирование. После доработки, тестирование показало, что задача решена только для половины вызываемых хранимых процедур. После этого с программистом пришлось провести разъяснительную беседу на тему квантора всеобщности.