@ProCxx

Страница 2284 из 2477
Nikita
16.08.2018
11:13:01
Есть ли среди вас сторонники такого кодинг-стайла, в котором именование членов класса начинается с префикса "m_"? Если вы используете такой префикс, то какие плюсы находите? Я читал, что так проще с автозаполнением - IDE подскажет по "m_" доступные члены. А с постфиксом "_" менее удобно в плане подсказок.
Участвую во втором проекте подряд с именованием m_ Можно именовать с m_ поля классов, а с g_ глобальные переменные, тогда по префиксу сразу понятно шо цэ такэ - в этом мне видится преимущество над просто _

John
16.08.2018
11:13:58
Ну, 'm_' вообще-то значит mutable

Google
John
16.08.2018
11:14:08
c_ - const

Nikita
16.08.2018
11:14:08
я тоже "точкой" g_ пользуюсь :)
ну g_ конечно отношения к подсказкам по точке не имеет отношения

John
16.08.2018
11:14:16
s_ - static

Nikita
16.08.2018
11:14:45
elias
16.08.2018
11:15:09
мне кажется, что const/mutable - это уже детализация. так можно докатиться до указания типа переменной в имени

Alex Фэils?︙
16.08.2018
11:16:00
lpctstrFirstName

Nikita
16.08.2018
11:16:22
CMAKE_CXX_STANDARD (емнип)
А как его готовить именно для того кейса, что я описал? Насколько я знаю, эта штука просто подпихивает компилятору флаг -std=c++{N}, а в случае с msvc вообще ничего не делает вроде (возможно, в msvs 2017 что-то изменилось)

Alex Фэils?︙
16.08.2018
11:17:24
дык он ж проверяет фичи компилятора, если нету, то он ругнется чем-то типа "Compiler %s is not able to build a simple program". Вот только как готовить я ща не вспомню, голова не варит совсем

Nikita
16.08.2018
11:17:31
ну типо g_globalVariableName

Google
Nikita
16.08.2018
11:17:47
m_classMember

Alex Фэils?︙
16.08.2018
11:18:24
CXX_STANDARD — CMake 3.1.3 Documentation cmake.org set_property(TARGET tgt PROPERTY CXX_STANDARD 11). This property is initialized by the value of the CMAKE_CXX_STANDARD variable if it is set when a target is created.

Stolyarchuk
16.08.2018
11:18:26
Чуваки а можно как нибудь внутри cmake проверить, что поддерживается тот или иной стандарт? Мне нужно выключить сборку одного из проектов если не поддерживается c++14

Anton
16.08.2018
11:18:34
auto autoFileName = ... ))

Nikita
16.08.2018
11:18:41
дык он ж проверяет фичи компилятора, если нету, то он ругнется чем-то типа "Compiler %s is not able to build a simple program". Вот только как готовить я ща не вспомню, голова не варит совсем
Проблема в том, что ругательства закончатся ошибкой сборки, а мне нужно просто пропустить сборку подпроекта и перейти к следующему

Anton
16.08.2018
11:18:45
венгерка это дно...

Nikita
16.08.2018
11:19:52
сча пробну

Stolyarchuk
16.08.2018
11:20:39
include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14) if(COMPILER_SUPPORTS_CXX14) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++14 support!") else() message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler.") endif()

Spoonson
16.08.2018
11:20:44
еще CMAKE_CXX_KNOWN_FEATURES можно попробовать, но там фичи отдельно

хотя, с какой-то версии смейка есть прям фича cxx_std_14

Ilia
16.08.2018
11:27:04
Парни! Вот вы там все, корутины, смартпойнтеры, интрузив поинтеры, концепты... А в жизни-то всё проще, вы бы знали как я "люблю" такой вот код: if(rc == S_DB_NO_DATA) { // <<ATTENTION>> *** ver 3.0 *** // next line has been removed //data->Free(); return false; } else { return true; }

Igor
16.08.2018
11:28:03
согласен, ужжасное смещение и переносы скобочек и пробела после ифа нет)

Ilia
16.08.2018
11:29:20
согласен, ужжасное смещение и переносы скобочек и пробела после ифа нет)
Смещение вставилось при вставке сюда. Не в нём дело.

Stolyarchuk
16.08.2018
11:30:02
Чем проще, тем лучще

Главное до индусского кода не доводить

Ilia
16.08.2018
11:32:27
Главное до индусского кода не доводить
Т.е. это вам не индусский код? Нуну...

Stolyarchuk
16.08.2018
11:32:56
else if нет

Всё ок

Nikita
16.08.2018
11:33:11
else if (rc != S_DB_NO_DATA)

Google
Igor
16.08.2018
11:33:38
return true; // OK

Nikita
16.08.2018
11:34:15
// returns true if rc isn't S_DB_NO_DATA

Евгений
16.08.2018
11:34:15
return true; // OK
return (bool) RESULT_OK; // RESULT_OK - constant for more readabilier code

Stolyarchuk
16.08.2018
11:34:45
Выход из функции в елсе для читаемости..

Так все делают

Alexey
16.08.2018
11:35:04
Парни шалом всем!

Nikita
16.08.2018
11:35:24
хеллоу

Евгений
16.08.2018
11:35:51
return (bool) RESULT_OK; // RESULT_OK - constant for more readabilier code
во, чисто по-индусски, и топ инглиш

двойная сравнительная степень в каментах

C-style cast

Nikita
16.08.2018
11:36:32
most

Anton
16.08.2018
11:36:39
индусский код это когда if (to_string(var).size() == 5) ))

ибо size "true" = 4 а "false" = 5

Евгений
16.08.2018
11:40:29
ибо size "true" = 4 а "false" = 5
а как to_string работает? По моему даже boost::lexical_cast<std::string>(bool) даст 0 или 1

Max
16.08.2018
11:40:49
Так все делают
Упаси госспади делать такое вместо "return rc != S_DB_NO_DATA;"

Anton
16.08.2018
11:41:49
а как to_string работает? По моему даже boost::lexical_cast<std::string>(bool) даст 0 или 1
ну в классичской шутке про индусский код было именно так. там правда java была

Spoonson
16.08.2018
11:43:09
Упаси госспади делать такое вместо "return rc != S_DB_NO_DATA;"
там же была очистка ресурсов до этого, да и далеко не самое страшное, что можно увидеть. Практически стилистистический момент.

Max
16.08.2018
11:46:10
там же была очистка ресурсов до этого, да и далеко не самое страшное, что можно увидеть. Практически стилистистический момент.
Категорически не согласен. 1. Когда — "до этого"? В начале времён? Мусор нужно выкидывать. Мусор ухудшает читаемость и повышает когнитивную нагрузку. 2. Добавление вложенности, когда логически этой вложенности нет, делает то же самое. 3. Не худшее. Но "не худшее" - это не то чтобы плюс.

Google
P
16.08.2018
11:47:53
Igor
16.08.2018
11:48:26
Это еще что, я тут в одной книжке прочитал, что if (a) x = f(); else if (b) y = f(); else z = f(); Это не торт, и нужно (a?x:(b?y:z)) = f();!

Max
16.08.2018
11:48:43
А еще лишнее отрицание ухудшает читаемость, например. Такие выражения потом могут заканчиватся каким-нибудь return !(!(a != !b) && !(b || !c)).
Согласен. Но здесь из контекста непонятно, насколько оно лишнее. Даже названия метода нет. Может это отрицание и правда лучше оставить здесь, а не прокидывать по всему коду.

Igor
16.08.2018
11:49:34
Хз, "тонкости с++" или както так называлась

Alex Фэils?︙
16.08.2018
11:52:18
(но вообще я прочитал до конца тот кусок кода ,и понял, что его надо зарефактить до return rc != S_DB_NO_DATA; сначала я подумал про инверсию ифа)

вот кстати сразу всплыл вопрос в голове, а насколько хорош/плох кодинг стайл с приписыванием this-> всегда и везде
проблема уровня цвета фломастера, кмк. this прям сильно влияет на семантику только в шаблонной хероте (при инстанциации дерьма будет искаться функция сначала в классе, а потом в другом скоупе рядышком)

Nikita
16.08.2018
11:54:48
да, там через круп. вроде в смаке 3.11 фиксед было
:( у нас нельзя cmake 3.11 - он нинзю не находит почему то

Alex Фэils?︙
16.08.2018
11:55:01
странно... надо им баг закинуть

PRoSToC0der
16.08.2018
11:55:05
ну просто как альтернатива, по идее вместо g_ для глобальных можно всегда дописывать ::, а для мемберов вместо m_ дописывать this->, просто не понимаю в чём их принципиальное отличие при написании кода

Ilia
16.08.2018
11:55:27
Упаси госспади делать такое вместо "return rc != S_DB_NO_DATA;"
Спасибо, Макс, ты оживил во мне веру в человечество...

Alex Фэils?︙
16.08.2018
11:55:57
ну просто как альтернатива, по идее вместо g_ для глобальных можно всегда дописывать ::, а для мемберов вместо m_ дописывать this->, просто не понимаю в чём их принципиальное отличие при написании кода
можно так, да. отличия тащемта, кроме шаблонной поебени, чисто косметические. Ну, и еще с :: эта поебень, про которую @webreh говорит с тем, как сработают customization points

Nikita
16.08.2018
11:55:59
странно... надо им баг закинуть
возможно там поменяли механизм поиска или чё то такое, но раньше (в 3.8 ещё точно робит) достаточно было закинуть каталог нинзи в PATH и всё находилось, в 3.11 перестало

Ilia
16.08.2018
11:57:09
там же была очистка ресурсов до этого, да и далеко не самое страшное, что можно увидеть. Практически стилистистический момент.
Стилистический момент? ДА БЛИН ХРЕН! Там весь код в таких стилистических моментах! Итого, вместо того, чтобы иметь 2k чистого и продуктивного кода, там блиа всё в этих IFах которые не делают нихрена!

Google
Spoonson
16.08.2018
11:58:19
ну, а могли бы ручками деструкторы у членов класса вызывать, а тут то что

Alex Фэils?︙
16.08.2018
11:59:15
Стилистический момент? ДА БЛИН ХРЕН! Там весь код в таких стилистических моментах! Итого, вместо того, чтобы иметь 2k чистого и продуктивного кода, там блиа всё в этих IFах которые не делают нихрена!
вспомнил один кек, когда у меня юзался композитный листнер, а потом я зарефактил один его вложенный листнер, и забыл удолить этот композитный листнер. @fvnever помнит эту историю, лол Там была составная шняга из листнеров-примитивов, но в итоге один стал общим, и можно стало дропнуть композитный листнер

Alex Фэils?︙
16.08.2018
12:00:24
ЯНХНП, если чё...
да, там сложно без кода, а на рабочий код за примером лень лезть

PRoSToC0der
16.08.2018
12:02:19
Alex Фэils?︙
16.08.2018
12:03:47
надо бы эту штуку формализовать до строчки в FAQ с примерчиком

Max
16.08.2018
12:23:51
Антон
16.08.2018
13:08:38
Может кто подскажет. Хочу в eclipse подебажить проект который собирается с помощью makefiles. Собрал проект в дебаг моде, запускаю на дебаг в eclipse но он не может найти исходники, из-за чего можно только дизассемблить. В чем может быть трабл? С Eclipse никогда до этого не работал...

Антон
16.08.2018
13:16:13
Оук, спасиб

Страница 2284 из 2477