@Mercury13
Программист на «си с крестами» и не только

Насколько оправдан код на C++ в стиле Perl/PHP, с операцией || в роли if (!)?

Допустим, у нас есть функция
bool tryParseFloat(const wchar_t* aData, const wchar_t aPoint, double& rValue) {}

Такой код часто встречается на Perl или PHP, но насколько он ожидаем в C++?
tryParseFloat(data, L'.', value) || tryParseFloat(data, L',', value);

Пример синтетический и не совсем удачный, но принцип поняли.
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
НЕ стоит так писать. Оптимизатор вполне может сделать предвычисление аргументов функций до вызова самих методов и, если аргументы не тривиальные, то это может изменить логику программы. Да и вообще, такое читать довольно сложно и не очевидно.
Ответ написан
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
//! Brief description.
//function try to parse with aPoint decimal delimiter using position order in vector
//in example: if aPoint[0] fails try aPoints[1] etc...
bool tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, float& rValue) {}

tryParseFloat(data, {L'.', L','}, value);

//или
bool tryParseFloat(const wchar_t* aData, const wchar_t* aPoint, float& rValue) {}

tryParseFloat(data, L".,", value);


Но я бы две такие сигнатурки сделал (не всегда нужно проверять результат парсинга):
float tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, bool& result) {}
float tryParseFloat(const wchar_t* aData, const std::vector<wchar_t>& aPoint, float default_value = 0.0f) {}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы