ViKo 1 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба Я понимаю, что хочу написать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 74 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 3 minutes ago, ViKo said: Я понимаю, что хочу написать. проблемы не в написать, а в прочитать потом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 24 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба Just now, ViKo said: Я понимаю, что хочу написать. Да по-началу, пока код еще в процессе создания и многое в голове, все именно так и происходит, но проходят дни-месяцы-годы и читать эти шифровки становится весьма затруднительно. В одиночку это еще куда ни шло, особенно если память хорошая, но, если код пишут не в одиночку, то это становится головной болью всех, кто участвует в проекте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба Сам пишу, сам читаю. Всё понимаю. Если сомневаюсь, смотрю в справочный файл. Сомнения берут, когда операторы >> и + использую, и то редко. В остальном - никакого дискомфорта, только удовольствие от написанного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба К чему споры? Неспособный запомнить элементарное может писать со скобками y = ax+b. И никто ему это запретить не сможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 24 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 37 minutes ago, Сергей Борщ said: y = ax+b Так уже практически никто не пишет. Переменным давно принято давать "человеческие" названия, лучше отражающие их назначение. Поэтому выражения становятся длинные и без доп. скобок или разбиения выражений на несколько более простых уже не обойтись. Лишь в конкретно примитивных выражениях или для отладки есть смысл применять подобные абстрактные математически символы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 5 минут назад, Forger сказал: Так уже практически никто не пишет. Переменным давно принято давать "человеческие" названия, лучше отражающие их назначение. "Не надо говорить за всех". Пишут. И по моим наблюдениям - большинство. Всегда использую короткие (одно-, двух-символьные имена для локальных общих переменных внутри функций). Так удобнее. Цитата Поэтому выражения становятся длинные и без доп. скобок или разбиения выражений на несколько более простых уже не обойтись. Вот чтобы не было длинных, нечитаемых портянок на всю строку, и используют короткие имена. PS: И чрезмерное количество скобок там где не нужно - тоже снижает читаемость кода. Мне кажется - среднему человеку вполне по силам запомнить приоритеты нескольких операций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 7 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба для && еще важно, что он может и не исполнять один из операндов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 24 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 16 minutes ago, jcxz said: Пишут. И по моим наблюдениям - большинство. Сами виноваты )) Quote Вот чтобы не было длинных, нечитаемых портянок на всю строку, и используют короткие имена. Портянка - портянке рознь. Порой стремясь упростить одно, значительно усложняется совсем другое. Конечно, исключение могут составлять откровенно примитивные циклы в одну строку, выражения, которые имеют крайне малую область видимости и т. п. Пример: https://habr.com/ru/post/145850/ (см раздел "Качественные переменные", "Индексы циклов"). Книга называется: "Code Complete: A Practical Handbook of Software Construction". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 3 минуты назад, yes сказал: для && еще важно, что он может и не исполнять один из операндов Вот именно поэтому, наверное, и не существует короткой записи "&&=". И более правильно говорить не "один из", а "второй", потому что порядок вычисления операндов для этого оператора строго определен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба Я тоже за короткие названия и не пестрящий скобками код. Просто когда скобки ставят "на всякий случай", даже небольшое выражение становится трудно читаемым, приходится руками скобки раздвигать, чтобы суть уловить. Раньше тоже функции писал полными названиями, типа TestStartSemaphoreHandle... Сейчас же стараюсь очень кратко и лаконично... Например, так s32 rb_Read(sRB *RB, u8 Buf[], s32 Len) { s32 RLen; BusySpace(RLen); if(RLen > Len) RLen = Len; for(s32 i = 0, j = RB->RP; i < RLen; ++i, RB->RP = ++j) Buf[i] = RB->Buf[j &= (j - RB_BUFFER_SIZE) >> 31]; return RLen; } Коротко и понятно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 21 минуту назад, Forger сказал: Так уже практически никто не пишет. Это был утрированный пример элементарного выражения, приоритет операций в котором известен каждому школьнику старше второго класса. 1 минуту назад, Arlleex сказал: Коротко и понятно Даже после просмотра кода не понял, что означает "rb" в названии функции. Так что стараюсь давать полные, но не сильно длинные названия функциям. Максимум из двух слов. Остальное вкладываю в имя объекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 36 minutes ago, Forger said: Переменным давно принято давать "человеческие" названия, лучше отражающие их назначение. +1. Я тоже скобки расставляю. Чистая арифметика, конечно, не в счёт. 34 minutes ago, jcxz said: Всегда использую короткие А как вы читаете код спустя время? Ведь нужно трассировать переменную глазками от места использования, чтобы понять, что она значит. Если давать комментарии в месте объявления, то это тоже загромождает исходник. 18 minutes ago, Arlleex said: Коротко и понятно Простите, но нет Скажу сразу, ни в коем случае не критикую и не претендую на звание кодописателя)))) Мне очень трудно читать код, когда на одной строке сразу несколько выражений. Вот мои примеры. Но у меня переборы с длинными именами и "нэймспэйсами". В будущем этот код немного сократится. А так, стараюсь не сокращать имена переменным и функциям, а писать, по-возможности, короткие функции, чтобы помещались на экран. Хотя, в целом, писать код красиво, эффективно, и, самое главное, рабочий - это высшее искусство. пока мною недостигнутое. Но работает, уже хорошо))))))))))))))))))))) Debug::Errno::Error Drv::Lpc4337Uart::write( const void * _src, std::uint32_t _size, std::uint32_t _tm_ms ) { FFWK_ASSERT(_src); FFWK_ASSERT(_size); auto number = static_cast<std::uint32_t>(getDescription().number); Os::Mutex::Service mt(m_uart[number].mutex); FFWK_ASSERT(mt.take(300)); m_uart[number].txSrc = static_cast<const std::uint8_t *>(_src); m_uart[number].txSize = _size; m_uart[number].regs->THR = *m_uart[number].txSrc++; if (--m_uart[number].txSize) { enableInterrupt(IrqSource::Thre); return m_uart[number].rxSignal.wait(300); } return Debug::Errno::Error(Debug::Errno::Code::Ok); } Debug::Errno::Error Drv::Lpc4337Uart::open() { auto result = Debug::Errno::Error(Debug::Errno::Code::Ok); const auto number = getDescription().number; const bool uartNumCheck = number == Number::N0 || number == Number::N1 || number == Number::N2 || number == Number::N3; FFWK_ASSERT(uartNumCheck); return result; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба Локальным переменным даю имена предпочтительно 4-буквенные. Достаточно информативные и не длинные. Кроме индексов цикла или массива. Глобальным - более длинные, в PascalStyle. Но они становятся похожими на имена фунций. Здесь еще в поиске. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 24 18 декабря, 2019 Опубликовано 18 декабря, 2019 · Жалоба 1 hour ago, Сергей Борщ said: Так что стараюсь давать полные, но не сильно длинные названия функциям. Максимум из двух слов. Остальное вкладываю в имя объекта. +1 При сложной иерархии объектов для избегания имен из многих слов структурирую данных, разбивая их на блок из struct: // Создание объекта внутри некого класса // безымянная структура, поскольку используется только для одного объекта struct { RotaryEncoderAdvanced<float, PD8, PD9, PB15> encoder; ChannelIndex channelIndex; float actualMoisture; float minMoisture; float maxMoisture; float minOutput; float maxOutput; float outputPolarity; float actualOutput; float moistureSlope; float outputSlope; float coeff; float step; bool isActive; } pump; // Применение внутри одного из методов класса, которому принадлежит этот объект pump.encoder.setStepsPerClick(pump.step); pump.encoder.setMinValue(pump.minMoisture); pump.encoder.setMaxValue(pump.maxMoisture); pump.encoder.setValue(pump.actualMoisture); pump.moistureSlope = pump.maxMoisture - pump.minMoisture; pump.outputSlope = pump.maxOutput - pump.minOutput; pump.coeff = pump.outputSlope / pump.moistureSlope; Или вот еще вложенное, тоже безымянная структура, один объект (в секции private): struct { struct { float mileageKm; float materialKg[kMaterialsTotal]; float workingTimeHr; } daily; struct { float mileageKm; float materialKg[kMaterialsTotal]; float workingTimeHr; } total; } statistics; 46 minutes ago, haker_fox said: Debug::Errno::Error Drv::Lpc4337Uart::write Стараюсь использовать using (та, что вместо typedef) для типов, которые слишком длинные, строго ограничивая их область видимости. 2 minutes ago, ViKo said: Глобальным Похвастаю ))) Давно отказался от них, стало гораздо проще управлять проектом (в смысле объектами внутри него и их взаимодействием). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться