Что удваивает это подчеркивание в Какао

Я полагаю, что причина предоставления такого рода информации заключается в том, что он позволяет процессору и банку проводить анализ транзакции в режиме реального времени на основе риска, что потенциально может квалифицировать ее как исключение из SCA.

Полоса говорит об этом здесь: https://stripe.com/guides/strong-customer-authentication#low-risk-transactions

И анализ риска транзакций обсуждается в этом PSD2 / SCA бриф JP Morgan https://www.jpmorgan.com/jpmpdf/1320745288478.pdf

В тех случаях, когда информация не предоставляется и пользователь не аутентифицируется с помощью дополнительных средств Я подозреваю, что вы просто увидите нормальное снижение здесь. Вы также можете связаться со Stripe напрямую для получения более подробной информации об их системе.

6
задан Community 23 May 2017 в 09:57
поделиться

4 ответа

Ни компилятор C, ни компилятор Objective C не рассматривают имена переменной с начальными символами подчеркивания никто по-другому, чем какое-либо другое имя переменной. Единственный или двойной начальный символ подчеркивания является просто конвенцией и эффективно формирует пространство имен, во многом как NS префикс, используемый в классах Какао как NSString.

Рассмотрение кода SQLiteBooks, MasterViewController.m определяет эту статическую глобальную переменную:

// Manage the editing view controller from this class so it can be easily accessed from both the detail and add controllers.
static EditingViewController *__editingViewController = nil;

Таким образом, мое предположение - то, что автор SQLiteBooks использует двойной начальный символ подчеркивания для указания на глобальную переменную.

Компиляторы C (и дополнительным Objective C) резервные имена, начинающиеся с двух символов нижнего подчеркивания и прописной буквы для использования поставщиком компилятора, давая им зарезервированное пространство имен для использования для глобальных переменных и функций раньше, реализовывали стандартные библиотеки или представляли новые нестандартные ключевые слова как __block.

В то время как код SQLiteBooks технически действителен, он слишком легко перепутан с зарезервированным пространством имен, по-моему. Если бы Вы действительно снова используете тот код, я рекомендовал бы переименовать ту переменную (XCode имеет очень хорошее, переименовывают рефакторинг, который сделает это автоматически для Вас).

20
ответ дан 8 December 2019 в 03:40
поделиться

Это - просто переменное соглашение о присвоении имен. Это ничего не делает. Это - способ для разработчиков программ напомнить себе, "Это - частная переменная".

2
ответ дан 8 December 2019 в 03:40
поделиться

К компилятору символы нижнего подчеркивания рассматривают как любой буквенный символ. В более общем плане, хотя, символы нижнего подчеркивания обычно используются расширениями языка или крупными библиотеками для предотвращения конфликтов с пользовательским кодом.

Используя символы нижнего подчеркивания проблематично, потому что много групп пытается зарезервировать каждое имя с определенной комбинацией символов нижнего подчеркивания.

Apple традиционно использовала префикс одинарного подчеркивания для обозначения частной переменной экземпляра (общий стиль на объектно-ориентированных языках). Это было взято, чтобы подразумевать, что все должны снабдить префиксом их ivars символы нижнего подчеркивания, пока Apple не указала, что использование подчеркивания в Вашем коде могло создать конфликты с Какао, если Apple решает изменить их заголовки, и возможно Вы не были должны. Таким образом, префиксы подчеркивания стали "не рекомендуемым" кодированием практики.

В C и производных языках C, любом слове с предыдущими двойными подчеркиваниями и следующее нестандартное расширение языка. Посмотрите расширения Apple как __ атрибут __

Запаздывающие символы нижнего подчеркивания часто добавляются как компилятор или имя отладчика искаженные версии настоящих имен (особенно, когда компилятор является многопроходным), и обычно избегаются так, чтобы эти имена остались явно отличными от оригиналов. Суффикс Google их Objective C локальные переменные экземпляра с символами нижнего подчеркивания для предотвращения конфликтов с символами нижнего подчеркивания Apple.

Мой совет: не используйте символы нижнего подчеркивания. Вы не должны использовать локальные переменные с тем же именем как переменные экземпляра (это просто сбивает с толку). Единственный потенциальный конфликт между параметрами в методах установщика и соответствующих переменных экземпляра - и необходимо, вероятно, снабдить префиксом параметр нижний регистр "a", "новый" (или подобный), так как это ясно указывает, что параметр является входящими значениями, но еще не является значением.

6
ответ дан 8 December 2019 в 03:40
поделиться

Компилятору / поставщики библиотеки весьма свойственно обозначить бесспорный пред/постфиксы, как "зарезервировано" для них. Это должно в основном избежать, чтобы любые непреднамеренные конфликты между ввели/определили/наследовали переменные.

Сообщение, к которому Вы обращаетесь, расценивает, определяет, не переменные. Много компиляторов используют двойные подчеркивания для определения, они обеспечивают и полагаются.

Относительно того, почему это пример кода использует этот стиль - исходный автор использовал тот же стиль кодирования, который он, вероятно, использует в свое время к дневной работе, и потенциальный конфликт никогда не выделялся.

Необходимо быть прекрасным сохранением примера кода как есть, но если это делает Вас неудобными затем, можно переименовать переменную.

0
ответ дан 8 December 2019 в 03:40
поделиться