-
- Итого: только середина дня, а мы уже классно позащищали Родину от падающих ракет. Но есть одно «но»: даже при желании, молодому поколению научиться сейчас негде. Везде их научат только делать отисовские лифты. Николай Коровин(454 знак., 23.02.2018 15:26)
- Цитата "в условии if описывайте нормальный(желательный) ход событий, а в else - аномальный." - De_User(23.02.2018 15:08)
- Всегда делал ровно наборот: это позволяет через return быстро выйти из функции, а не иметь дикую вложенность if/else с кучей важного кода после этих else и через два-три экрана после относящегося к ним if -- такой код не читаем. - fk0(23.02.2018 13:05)De_user
- Цитата: "отлаживать функцию гораздо легче, если точки останова придется ставить всего на одном возврате из функции." - De_User(23.02.2018 15:09)
- Если вы её довели до дебаггера, то уже плохо. Её не надо б до дебаггера доводить, максимум до разматывания логов. - Николай Коровин(23.02.2018 16:27)
- Не понимаю. Нет проблем поставить столько точек останова, сколько нужно. В gdb можно дойти до выхода из функции (finish) и отмотать программ назад (reverse-step). При использовании всяких IAR ограниченным функционалом, наверное, лучше иметь один fk0(220 знак., 23.02.2018 15:02)De_user
- Про "наличие одной точки выхода уменьшает Cyclomatic Complexity всей программы." - De_User(24.02.2018 03:26)
- Cyclomatic Complexity and Why We Don't Use It. Весь текст можно не читать, достаточно прочесть функцию getMonthName, чтобы стало очевидно, что Cyclomatic Complexity - хреновая метрика сложности. Вы действительно думаете, что такой код придётся йцукен(100 знак., 23.02.2018 16:19, ссылка)De_user
- Спорное утверждение: чем return отличается от goto exit или неявного перехода (по закрывающей скобочке) к последней строчке? А syntax sugar точно уменьшает, даёт на выходе исходник с которым трудно работать, трудно понимать, легко допустить fk0(183 знак., 23.02.2018 15:31)De_user
- Про "наличие одной точки выхода уменьшает Cyclomatic Complexity всей программы." - De_User(24.02.2018 03:26)
- +1. Тоже предпочитаю сначала разобраться с тривиальным случаем, потом переходить к самому вкусному. Если йцукен(92 знак., 23.02.2018 14:49)
- Я часто придерживаюсь if (что-то не так) return ErrorCode, так что вот да вот:) А то и не ErrorCode, а вообще констчар* на строку ошибки (если функция из «приближённых к телу пользователя»). - Николай Коровин(23.02.2018 13:19)
- Цитата: "кучу проблем удалось бы избежать, если б сначала обрабатывался желательный исход" - De_User(23.02.2018 15:24)
- Там вообще проблем нет, такой код выдаёт сразу варнинг. Это не проблема ни разу. Для тех кто варнинги не читает есть -Werror. - fk0(23.02.2018 13:58)De_user
- "Негативных" выходов из функции обычно много, а позитивный путь ровно один, до конца тела функции. - fk0(23.02.2018 13:55)De_user
- Есть ещё сложность с высвобождением ресурсов иногда. Тут уж кто как пишет. Мне больше всего нравится при любой деаллокации занулять указатель (хотя чревато «ошибкой лишней сущности», да), а при АВОСТ просто высвобождать всё ненулевое. Николай Коровин(220 знак., 23.02.2018 14:07)
- …и граничные условия документировать предельно чётко. Не «выполняет ориентацию», а «от такой-то точки в такую-то сторону до достижения, а если успели повернуть — то туда-то». Тогда вовремя обнаружится, что она ±оборот закладывает. Николай Коровин(110 знак., 23.02.2018 14:53)De_user
- В C++ это менее заметно из-за смарт-поинтеров и деструкторов. А C вполне можно делать goto error и там ненулевое деаллоцировать, действительно. Можно тупо в лоб, в каждом выходе, писать деаллокацою выше по тексту аллоцированного. Всяко оно влазит fk0(327 знак., 23.02.2018 14:16)
- считаю, что одна функция не должна аллокатить много всего разного. - Mahagam(23.02.2018 14:10)
- Все такие теоретики. А я считаю, что в языке должен быть lexical scoping. Как в lisp, pascal, perl. А пока его нет будут функции и на 10 экранов, которые трудно разбить. - fk0(23.02.2018 14:17)
- Главное, чтобы функция не совмещала лишние предназначения. А пока она делает что-то одно и качественно простое, на количественном уровне она может быть хоть с Талмуд. Хотя это редкость, конечно. Николай Коровин(160 знак., 23.02.2018 14:41)
- Функция вообще ничего ДЕЛАТЬ не должна. Функция должна вычислять и возвращать РЕЗУЛЬТАТ на основе АРГУМЕНТОВ. Побочные эффекты в общем случае -- зло. - fk0(23.02.2018 14:43)
- Зависит от определения понятия «делать» :) Да и вместо половины вычислений обычно измерения, с учётом нашей специфики. - Николай Коровин(23.02.2018 14:54)
- Функция вообще ничего ДЕЛАТЬ не должна. Функция должна вычислять и возвращать РЕЗУЛЬТАТ на основе АРГУМЕНТОВ. Побочные эффекты в общем случае -- зло. - fk0(23.02.2018 14:43)
- Главное, чтобы функция не совмещала лишние предназначения. А пока она делает что-то одно и качественно простое, на количественном уровне она может быть хоть с Талмуд. Хотя это редкость, конечно. Николай Коровин(160 знак., 23.02.2018 14:41)
- Обычно много надо в инициализаторе, а он один и легко полируется :) Вообще это структурно уже напоминает плюсы, конструктор, методы, деструктор :) Только вместо исключений старый добрый результат-отлуп типа «не шмогла». - Николай Коровин(23.02.2018 14:16)
- Все такие теоретики. А я считаю, что в языке должен быть lexical scoping. Как в lisp, pascal, perl. А пока его нет будут функции и на 10 экранов, которые трудно разбить. - fk0(23.02.2018 14:17)
- Есть ещё сложность с высвобождением ресурсов иногда. Тут уж кто как пишет. Мне больше всего нравится при любой деаллокации занулять указатель (хотя чревато «ошибкой лишней сущности», да), а при АВОСТ просто высвобождать всё ненулевое. Николай Коровин(220 знак., 23.02.2018 14:07)
- Цитата: "два-три экрана в одной функции - нехорошо!" - De_User(23.02.2018 15:14)
- Два три экрана -- в твоём варианте. И текст в 200-й колонке из-за десятка вложенных if/else. - fk0(23.02.2018 14:03)De_user
- Если рассматривать не смешные баги, а реальные, то я могу привести парочку, которую я нашёл за великим Кармаком, когда баловался с сырцами Wolf3D. Николай Коровин(1564 знак., 23.02.2018 13:59)De_user
- Цитата: "кучу проблем удалось бы избежать, если б сначала обрабатывался желательный исход" - De_User(23.02.2018 15:24)
- Цитата: "отлаживать функцию гораздо легче, если точки останова придется ставить всего на одном возврате из функции." - De_User(23.02.2018 15:09)
- Всегда делал ровно наборот: это позволяет через return быстро выйти из функции, а не иметь дикую вложенность if/else с кучей важного кода после этих else и через два-три экрана после относящегося к ним if -- такой код не читаем. - fk0(23.02.2018 13:05)De_user
- А еще за K&R стиль скобочек надо убивать :) - RED_DRAGON(23.02.2018 11:11)
- Попривыкали к 40 дюймовым c 5 мгапиксельным разрешением. Вас бы убивцев на CGA, для просветления и отрезвления. И шоб обязательно IDE без горизонтального скроллинга. - Codavr(23.02.2018 13:12 - 13:14)
- Угу, я по этой лавочке и пишу всякие for (max=i=n=0; i<N; i++) if (max<v[i]) max=v[n=i]; в одну строчку. Именно из-за современных мониторов, когда хочется свести одну операцию к одной длинной строчке, чтобы не мозолила глаза. Николай Коровин(74 знак., 23.02.2018 16:20)
- Не, "лесенка" - наше все. Есть еще отладка, когда даже широкого монитора не хватает. - VLLV(23.02.2018 16:22)
- Помнится, я набрал «лесенку» из дюжины таких вот строчек %) И комментариев простыня больше кода, чтобы потом не забыть, как это хулиганство работает :) Антипример, ага. «Делайте лесенку, но ну не так же!» %) - Николай Коровин(23.02.2018 16:35)
- На днях не заметил сложную конструкцию в длинной строке, и наворотил добавленным иф-ом. - VLLV(23.02.2018 17:26)
- Можно в 0-80 колонках писать один код, по факту любой не работающий, а в 200-280 колонке писать настоящий код. - fk0(23.02.2018 17:34)
- Угу. Длинные строки сами по себе так себе, но если они ещё и не обёрнуты в должные скобки… - Николай Коровин(23.02.2018 17:32)
- На днях не заметил сложную конструкцию в длинной строке, и наворотил добавленным иф-ом. - VLLV(23.02.2018 17:26)
- Помнится, я набрал «лесенку» из дюжины таких вот строчек %) И комментариев простыня больше кода, чтобы потом не забыть, как это хулиганство работает :) Антипример, ага. «Делайте лесенку, но ну не так же!» %) - Николай Коровин(23.02.2018 16:35)
- Не, "лесенка" - наше все. Есть еще отладка, когда даже широкого монитора не хватает. - VLLV(23.02.2018 16:22)
- Угу, я по этой лавочке и пишу всякие for (max=i=n=0; i<N; i++) if (max<v[i]) max=v[n=i]; в одну строчку. Именно из-за современных мониторов, когда хочется свести одну операцию к одной длинной строчке, чтобы не мозолила глаза. Николай Коровин(74 знак., 23.02.2018 16:20)
- Попривыкали к 40 дюймовым c 5 мгапиксельным разрешением. Вас бы убивцев на CGA, для просветления и отрезвления. И шоб обязательно IDE без горизонтального скроллинга. - Codavr(23.02.2018 13:12 - 13:14)
- эта картинка должна висеть на каждом столбе при любом наезде на языки типа фбд и т.п. LordN(5 знак., 22.02.2018 15:32)
- Killed - Yft(22.02.2018 13:30)
- Спасибо за утренний заряд :) Реально показательная картина :) - Shatun_(22.02.2018 10:32)
- В чём сокровенный смысл данного изоображения, объясните пожалуйста! - AU08(22.02.2018 03:36)
- Уже даже ИАР генерирует предупреждение. Картинка устарела :) - VLLV(22.02.2018 10:25)
- Ощущение, что Си надо на возрасты разбивать. Когда if ( ErrorNum = WasError (Data) ) cout<<"Ненулевая ошибка! Номер "<<ErrorNum<<endl; перестаёт казаться вычурным, опасным и непонятным — значит, ты Си-старик и нативный носитель языка. - Николай Коровин(22.02.2018 14:49)
- Си-старик скорее напишет так: if((ErrorNum = WasError(Data)) != 0) - mr-x(22.02.2018 16:08)
- Я про восприятие :) А с написанием согласен, даже если сам спокойно воспринимаешь первый вариант, писать надо всё равно второй (этот). Мало ли, кому, когда и как придётся… - Николай Коровин(22.02.2018 16:28)
- res = func(arg1, ...); mut(61 знак., 22.02.2018 16:27)
- Ни хрена, эта константу впереди я увидел первый раз у дипломника-студента 10 лет назад, вместе с венгерской кодировкой. Старики типа меня пишут по людски. - VLLV(22.02.2018 16:12)
- Какую константу впереди? Про константу - это ниже по теме. Я про то, что лениться не надо. "Кто понял жизнь, тот больше не спешит" (С) Oмар Хайям. - mr-x(22.02.2018 16:16 - 16:20)
- Неважно. Та же константа - это попытка обмануть судьбу, от которой, как известно, не уйдешь. - VLLV(22.02.2018 16:19)
- В 2008 г. эта венгерская хрень ещё не была изжита? Мелкософт надо сжечь. Вообще из Венгрии хоть что-то хорошее кроме икаруса вышло? - SciFi(22.02.2018 16:15 - 16:19, картинка)
- Имре Кальман, мать его. Ещё - один из основателей Интел, девушки - шахматистки. Иштван Сабо ( Динамо Киев). - Крок(23.02.2018 11:35)
- Вина Tokaji, консервированные огурцы-помидоры Глобус, гуляш, паприкаш, колбаски острые, музыкальная аппаратура Beag - MBedder(23.02.2018 11:23)
- Икарус - хорошее?? однако - AlexG(23.02.2018 07:13)
- Может, на фоне клопозавра с вечно открытым радиатором? - Николай Коровин(23.02.2018 16:58)
- В "клопозаврах" хотя-бы этой специфической икарусной вони в салоне не было - AlexG(23.02.2018 20:50)
- Может, на фоне клопозавра с вечно открытым радиатором? - Николай Коровин(23.02.2018 16:58)
- Кубик Рубика тоже неплох :) - mut(22.02.2018 16:20)
- Какую константу впереди? Про константу - это ниже по теме. Я про то, что лениться не надо. "Кто понял жизнь, тот больше не спешит" (С) Oмар Хайям. - mr-x(22.02.2018 16:16 - 16:20)
- 1. Это цэпепе lloyd(168 знак., 22.02.2018 14:52)
- Блин :) На автомате cout написал %) действительно %) - Николай Коровин(22.02.2018 15:21)
- При сравнении с константой рекомендуют константу писАть слева. Дескать, если один рефлекс подведёт, то два сразу - вряд ли. - SciFi(22.02.2018 15:00)
- Для c++ ещё можно использовать enum class, который при приравнивании требует явного приведения типа. Evgeniy1294(58 знак., 22.02.2018 23:48)
- Я наверное единственный здесь левша (или не араб, но тоже единственный). Пишу слева направо и в операциях сравнения слева пишу переменную, а уже потом пытаюсь её с чем-нибудь сравнить. А в чём прикол делать наоборот? - Крок(22.02.2018 18:39)
- Компиляторы на такое давно варнинги выдают. Лучше варининги не отключать и не игнорировать. - AlexBi(22.02.2018 18:19)
- У некрочипа в либах так сделано. - Evgeniy1294(22.02.2018 15:57)
- «Надо запомнить» © Ропсенштильс - Николай Коровин(22.02.2018 15:37)
- Спасибо! Очень грамотно! - Evgeny_CD(22.02.2018 15:18)
- Yoda Conditions - Mahagam(22.02.2018 15:46, картинка)
- зачёт :-))) - SciFi(22.02.2018 15:46)
- Yoda Conditions - Mahagam(22.02.2018 15:46, картинка)
- Спасибо! Очень полезный совет! - AU08(22.02.2018 15:13)
- Си-старик скорее напишет так: if((ErrorNum = WasError(Data)) != 0) - mr-x(22.02.2018 16:08)
- Ощущение, что Си надо на возрасты разбивать. Когда if ( ErrorNum = WasError (Data) ) cout<<"Ненулевая ошибка! Номер "<<ErrorNum<<endl; перестаёт казаться вычурным, опасным и непонятным — значит, ты Си-старик и нативный носитель языка. - Николай Коровин(22.02.2018 14:49)
- рукалицо - SciFi(22.02.2018 10:15)
- Хы. В условии не сравнение, а присвоение :) - Звероящер(22.02.2018 05:04)
- …вот и горе-программеры тоже не заметили… Николай Коровин(29 знак., 22.02.2018 03:45)
- Вот именно, щас же фсе С#, питон, и всякая херня. У нас, старых пердунов, рука не поднимется накалякать такие элементарные ошибки. _basile(104 знак., 22.02.2018 13:22, )
- 1. Тебе бы конечно научиться замечать иронию, а то сам клоуном можешь выглядеть. 2. Про холод я уже у тебя читал в 2016 Shatun_(209 знак., 22.02.2018 13:49)
- На али это бы было типа "Охладите своих поклонников" - Yft(22.02.2018 13:31)
- Русский язык - непростой. Но, я так и в электронике, об чем, собсно и сайт. _basile(61 знак., 22.02.2018 13:51, )
- А что, вот, по питанию. Щас дофига всего. А мне - MC33063. И хрен с ними. Проверенная женщина лучше ляди. - _basile(22.02.2018 13:57, )
- Ты только и кАтаешь тут. Я понимаю, что граммотность в целом важна. Но есть технари, которым филолагами не стать. А есть и те, кто русский язык (писменный) пользует только изредка, а книжки читает на другом языке. - Shatun_(22.02.2018 13:56)
- Чот я тему не просек, у тебя базар о чем, конкретно ? - _basile(22.02.2018 16:34, )
- Русский язык - непростой. Но, я так и в электронике, об чем, собсно и сайт. _basile(61 знак., 22.02.2018 13:51, )
- Тебя все прет. Мыж уже терли как-то. Но с "охлождения" перегнули. Ведь должно охолождения (от слова холод), не? - Shatun_(22.02.2018 13:26)
- Еще один клоун. Ты хоть в Word забей, можь он грамотней тебя. Ладно, я те слово "хладогент" представлю. И как его проверять ? Через Бауманку, наверное. - _basile(22.02.2018 13:34, )
- Я в детстве туеву книжек перечитал, ну, и газет до кучи. Со зрительною памятью - пока зашибись. - _basile(22.02.2018 13:43, )
- Еслиб так хорошо было, то бы помнил меня, клоуна твоего, с моей иронией... - Shatun_(22.02.2018 13:51)
- А с мышечной? - blackprapor(22.02.2018 13:45)
- Я в детстве туеву книжек перечитал, ну, и газет до кучи. Со зрительною памятью - пока зашибись. - _basile(22.02.2018 13:43, )
- Еще один клоун. Ты хоть в Word забей, можь он грамотней тебя. Ладно, я те слово "хладогент" представлю. И как его проверять ? Через Бауманку, наверное. - _basile(22.02.2018 13:34, )
- Вот именно, щас же фсе С#, питон, и всякая херня. У нас, старых пердунов, рука не поднимется накалякать такие элементарные ошибки. _basile(104 знак., 22.02.2018 13:22, )
- Уже даже ИАР генерирует предупреждение. Картинка устарела :) - VLLV(22.02.2018 10:25)