Как искать хорошие названия для идентификаторов в выбранной предметной области
Запись от sourcerer размещена 02.08.2018 в 12:40
Показов 5599
Комментарии 5
Метки c++
Названия переменных лучше просто гуглить, смотреть в википедии, а затем смотреть английский вариант статьи в той же википедии. Скажем, гуглим "коэффициент светопрозрачности", первым же линком находим статью Коэффициент пропускания, смотрим английский вариант статьи - вуаля, термин по-английски звучит так: transmission coefficient. Гуглим оргстекло, получаем по такой же схеме plexiglas. Значит коэффициент светопрозрачности оргстекла у нас будет plexiglasTransmissionCoefficient. Отлично! Имя переменной говорит само за себя.То же самое, скажем, со светодиодной лентой. Вот такое:
Источник. | ||||||||||
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 5
Комментарии
-
В целом это правильно, но в таком подходе можно и переусердствовать (шутка про AbstractSingletonProxyFactoryBean). Одно слово не очень длинное, но цепочка с операторами и другими информативными именами бывает, выйдет весьма громоздкой. Лично я предпочитаю вдобавок отбрасывать "избыточные" окончания: "Len", "Coef". Хотя в той проге может встретится, например, слово "Lens", тоже надо бдеть, чтоб путаница не настигла.Запись от MLPMan размещена 03.08.2018 в 14:39
-
Длинновато получается. Особенное если придётся использовать в сложных конструкциях
Если в коде встречается только один коэффициент светопрозрачности, то plexiglas из названия можно вообще выбросить, оставив только в комментарии. Ведь и так понятно, что имеется в виду. Я, в отличие от предыдущего комментатора, люблю эти сокращения использовать - Len, Coeff и проч. Да и комментарии никто не отменял, там можно хоть определение плексигласа описать))C++ 1 2 3 4 5
// формулы от балды for (int i = 0; i < plexiglasTransmissionCoefficient * ledStripLightLength; i++) { arr[i] = std::pow(ledStripLightLength * ledStripLightLength, plexiglasTransmissionCoefficient - 1f); // и т.д. }
А в целом с методом согласен, сам так делаю. В названия переменных идёт обрубленный вариант, а в комментарий - по полной.Запись от tezaurismosis размещена 05.08.2018 в 11:52
-
А я вот не изобретаю себе никаких формальных правил по стилю или по названиям. Я руководствуюсь по большому счёту одним правилом: код нужно писать так, чтобы его было удобно читать и сопровождать в будущем. Если код будет лучше и быстрее пониматься с длинным именем локальной переменной - я напишу длинное. Если для хорошего восприятия кода достаточно (а во многих случаях даже лучше) короткого имени переменной - я напишу короткое. Если короткое имя требует комментария, я его напишу, если комментарий избыточен, я его писать не будуЗапись от Evg размещена 05.08.2018 в 12:02
-
Если код расширяется, то и стиль получается придется менять и переменные рефакторить. Так что лучше все же длинные, но понятные имена.
Но вся соль в том что смысл имен переменных диктуется предметной областью, и иногда она не дает нормально задать имена, иногда не удается из-за плохого знания этой предметной области.Запись от Avazart размещена 05.08.2018 в 14:42
-
Всегда можно сделать лучше форматированием и вынесением кода:
В любом случае стоит отталкиваться от смысла(предметной области), поэтому примеры от балды не подходят.C++ 1 2 3 4 5 6 7 8 9 10
using namespace std; const int count = plexiglasTransmissionCoefficient * ledStripLightLength; for (int i = 0; i < count; ++i) { arr[i] = pow(ledStripLightLength * ledStripLightLength, plexiglasTransmissionCoefficient - 1f); // и т.д. }
К примеру вероятно можно было бы избавится от квадрата который в степени математически упростив, а если нет можно было бы вывести в отдельную ф-цию
C++ 1 2 3 4
double powSqr(int length,double coefficient) { return pow(length * length, coefficient - 1f); };
Запись от Avazart размещена 05.08.2018 в 14:46


