Что является опытом с использованием unicode в идентификаторах

try:
    [code that could raise the error]
except ValueError as e:
    if len(e.args) > 0 and e.args[0] == 'Residuals are not finite in the initial point.':
        [do stuff I want when the Residuals are not finite]
    else:
        raise e

Возможно, вам придется проверить, действительно ли e.args[0] содержит эту строку (спровоцируйте ошибку и напечатайте e.args[0])

См. Также документацию по BaseException.args [116 ]

8
задан Toon Krijthe 16 November 2008 в 20:41
поделиться

6 ответов

Помимо подобных символьных ошибок Вы упоминаете и технические вопросы, которые могли бы возникнуть при использовании различных редакторов (w/BOM, wo/BOM, различная кодировка в том же файле вставкой копии, которая является только проблемой, когда существуют на самом деле символы, которые не могут быть закодированы в ASCII и так далее), я нахожу, что не стоит использовать символы Unicode в идентификаторах. Английский язык стал лингва франка разработки, и необходимо придерживаться его в то время как написание кода.

Это, которое я нахожу особенно верными для кода, который может быть замечен где угодно в мире любым разработчиком (открытый исходный код, или кодируют, который продается наряду с продуктом).

10
ответ дан 5 December 2019 в 08:26
поделиться

Мой опыт с использованием unicode в исходных файлах C# имел катастрофические последствия, даже при том, что это было японским (таким образом, не было ничего, чтобы перепутать со "мной"). Безопасному источнику не нравится unicode, и когда Вы фиксируете вручную поврежденные исходные файлы в Word, Вы знаете, что что-то не правильно.

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

6
ответ дан 5 December 2019 в 08:26
поделиться

Я думаю, что это не хорошая идея использовать весь набор символов ANSI для идентификаторов. Неважно, который страница кода ANSI Вы работаете в, Ваша страница кода ANSI включает символы, которые не включают некоторые другие страницы кода ANSI. Таким образом, я рекомендую придерживаться ASCII, никакие коды символов выше, чем 127.

В экспериментах я использовал более широкий диапазон символов ANSI, чем просто ASCII, даже в идентификаторах. Некоторые компиляторы приняли его. Некоторым IDE были нужны опции, которые будут установлены для шрифтов, которые могли отобразить символы. Но я не рекомендую это для практического применения.

Теперь на различии между страницами кода ANSI и Unicode.

В экспериментах я сохранил исходные файлы в Unicode и использовал символы Unicode в идентификаторах. Некоторые компиляторы приняли его. Но я все еще не рекомендую это для практического применения.

Иногда я хранил исходные файлы в Unicode и использовал escape-последовательности в некоторых строках для представления значений символа Unicode. Это - важная практика, и я рекомендую это высоко. Я особенно должен был сделать это, когда другие программисты использовали символы ANSI в своих строках, и их страницы кода ANSI отличались от других страниц кода ANSI, таким образом, строки были повреждены и вызванные ошибки компиляции или дефектные результаты. Способ решить это состоит в том, чтобы использовать Управляющих последовательность Unicode.

3
ответ дан 5 December 2019 в 08:26
поделиться

Это зависит от языка, который Вы используете. В Python, например, easierfor меня для придерживаний unicode, поскольку мои приложения должны работать на нескольких языках. Таким образом, когда я получаю файл от кого-то (что-то), что я не знаю, я принимаю латинский 1 и перевожу в Unicode.

Работы для меня, как я нахожусь в Латинской Америке.

На самом деле, после того как все сглажено, все это становится плавной ездой.

Конечно, это зависит от предпочтительного языка.

0
ответ дан 5 December 2019 в 08:26
поделиться

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

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

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

1
ответ дан 5 December 2019 в 08:26
поделиться

Я никогда не использовал unicode для имен идентификатора. Но что прибывает, по моему мнению то, что Python позволяет unicode идентификаторы в версии 3: PEP 3131.

Другим языком, который делает широкое применение unicode, является Крепость.

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

0
ответ дан 5 December 2019 в 08:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: