1) Включайте все проверки компилятора по максимуму.
2) Не смешивайте разные типы в одном выражении.
3) А особенно не смешивайте знаковые и беззнаковые типы.
4) И вообще, не пользуйтесь беззнаковыми типами без крайней необходимости (например, для ьитовых операций). С чего вы взяли, что это тип "по умолчанию?". Послушаем что на этот счёт говорит Страуструп:
ES.102: Use signed types for arithmetic
Reason
Because most arithmetic is assumed to be signed; x - y yields a negative number when y > x except in the rare cases where you really want modulo arithmetic.
Example
Unsigned arithmetic can yield surprising results if you are not expecting it. This is even more true for mixed signed and unsigned arithmetic.
Раньше тоже вручную вбивал, но последние три года получаю чеки по qr-коду и счастлив. Продолжать жрать кактус, когда есть нормальная еда, под предлогом «а вдруг нормальную еду отберут» как-то чересчур по-спартански.
Надеюсь, для людей, рекомендующих «правило спирали» в аду есть отдельные котлы. Помню, на stackoverflow тоже все рекомендовали, не разобравшись. За десять лет, наверно, уже можно было понять, что это правило неправильное, нет? Как оно разберет эту строку, например?
int M[3][3]
А никак, потому что это бред.
Вот есть нормальное правило «право-лево»: cseweb.ucsd.edu/~ricko/rt_lt.rule.html
1. Сначала разбираем всё справа.
2. Потом разбираем всё слева.
3. Если есть круглые скобки, то порядок меняется, как в арифметических выражениях.
Всё.
Я делаю проще — оставляю в браузере вкладки. Сейчас вот накопилось 218. Лайфхак: если копить вкладки, то рано или поздно (у меня примерно раз в три года) что-то случится и вкладки утеряются и можно с чистой совестью начинать жизнь с чистого листа!
А в целом мне ваша статья понравилось, потому что я давно недоумеваю, почему никто не озадачивается таким немаловажным вопросом, как дизайн исходного кода. Как правильно писать текст на веб-страницах уже давно изучают в университетах, а исходный код до сих пор пишут кто на что горазд.
Мне отсутствие скобки несильно помешало, потому что мне и так не сразу понятно было, какие скобки куда относятся. Для меня, как видите, ваш вариант труднее воспринимать. Но восприятие текста гораздо менее важно, чем отсутствие ошибок. Первая задача стиля, как я это вижу, — способствовать минимизации ошибок, а уже потом можно думать над читабельностью.
P.S. Такую расстановку скобок я (и мои коллеги вслед за мной) использую около десяти лет, на работе. Я всегда в поиске более лучшего стиля, и время от времени что-то меняю, но к этим скобкам вопросов еще не возникало.
На мой взгляд, второй подход и является более логичным. У нас не две отдельные сущности, функция и список аргументов, а одна целая сущность — функция. И функция «содержит» аргументы, как вы сказали. Это не какой-то список аргументов куда-то передаётся, а аргументы являются неотъемлимой частью именно этой функции, потому что без них это уже будет другая функция. Ведь функция определяется не именем, а сигнатурой.
Мне кажется, здесь вы так сконцетрировали внимание на идентификаторах, игнорируя исключительную важность скобок, что часть скобок растеряли. Я тоже не сразу заметил ошибку, строка воспринимается как набор идентификаторов, где-то там между ними затерялись скобки, что к чему относится, где имена функций, где аргуметы, непонятно.
Я сейчас используя такой стиль:
Здесь сразу видно, где имя функции, потому что к нему привязана открывающая скобка списка аргументов. И в целом структура вложенности прослеживается чуть лучше, у вас же этот важный момент полностью игнорируется.
Справедливости ради надо сказать, что comss.ru это нормальный портал с промоакциями на антивирусы, я на него даже подписан. В данном случае там лежит ссылка на официальный сайт Anydesk.
Есть такое, у Страуструпа в документе по ссылке где-то упомянут этот досадный момент.
1) Включайте все проверки компилятора по максимуму.
2) Не смешивайте разные типы в одном выражении.
3) А особенно не смешивайте знаковые и беззнаковые типы.
4) И вообще, не пользуйтесь беззнаковыми типами без крайней необходимости (например, для ьитовых операций). С чего вы взяли, что это тип "по умолчанию?". Послушаем что на этот счёт говорит Страуструп:
ES.102: Use signed types for arithmetic
Reason
Because most arithmetic is assumed to be signed; x - y yields a negative number when y > x except in the rare cases where you really want modulo arithmetic.
Example
Unsigned arithmetic can yield surprising results if you are not expecting it. This is even more true for mixed signed and unsigned arithmetic.
А никак, потому что это бред.
Вот есть нормальное правило «право-лево»: cseweb.ucsd.edu/~ricko/rt_lt.rule.html
1. Сначала разбираем всё справа.
2. Потом разбираем всё слева.
3. Если есть круглые скобки, то порядок меняется, как в арифметических выражениях.
Всё.
P.S. Такую расстановку скобок я (и мои коллеги вслед за мной) использую около десяти лет, на работе. Я всегда в поиске более лучшего стиля, и время от времени что-то меняю, но к этим скобкам вопросов еще не возникало.
Мне кажется, здесь вы так сконцетрировали внимание на идентификаторах, игнорируя исключительную важность скобок, что часть скобок растеряли. Я тоже не сразу заметил ошибку, строка воспринимается как набор идентификаторов, где-то там между ними затерялись скобки, что к чему относится, где имена функций, где аргуметы, непонятно.
Я сейчас используя такой стиль:
Здесь сразу видно, где имя функции, потому что к нему привязана открывающая скобка списка аргументов. И в целом структура вложенности прослеживается чуть лучше, у вас же этот важный момент полностью игнорируется.
Говорящие фото тоже впечатляют