unicode - 在源文件中使用 Unicode 并且缺少 unicode 符号

标签 unicode readability code-readability

自从我了解到 clang 能够编译用 Unicode 编写的 c++ 源文件后,我在编写与数学相关的代码时就开始大量使用它。比较

uₙ₊₁ᵖ = A*uₙ + B*uₙ₋₁;
uₙ₊₁ᶜ = π * Aₜₒₜ;
uₙ₊₁ = uₙ₊₁ᵖ + uₙ₊₁ᶜ;


u_n1_p = A*u_n + B*u_n_1;
u_n1_c = pi * A_tot;
u_n1 = u_n1_p + u_n1_c;

对我来说就像白天和黑夜一样:我只是通过阅读第一段代码来理解它,而我只是不想阅读另一段

我知道 Python3 和 Ruby 允许使用 Unicode 源文件,所以这个特性似乎正在传播。

可以对这种做法提出异议:例如并非所有字体都支持这些字符,您的源文件取决于您使用的编码,并且您必须将 Unicode 字符从某处实际复制/粘贴(例如)到您的文本编辑器中。但是,我认为可读性的提高确实很大。

现在你可以在 this page 上看到并非所有(甚至拉丁文)字母都可以在下标和上标中使用。更糟糕的是,这些绝对不是用于在源文件中编写数学的用途(参见 here)

因此我的问题是:
  • 您是否将 Unicode 用于与数学相关的代码?您如何看待这种用法?
  • 有没有办法把一个字符变成下标或上标? (类似于组合用于变音符号的字符)
  • 最佳答案

    我会说不,除非

  • 仅限内部代码,不会污染公共(public) API
  • 整个团队都同意它有显着的好处
  • 仅限数学密集型函数(不适用于相当琐碎的数学任务)
  • 从业务逻辑/接口(interface)代码中分离出来
  • 仅限于 unicode 的某些子集(可能只是下标和希腊符号)

  • 即使满足所有这些要求,我也会权衡使用的麻烦与增加的可读性,并倾向于坚持使用 ASCII。

    确保你给你的团队在什么时候可以接受的严格指导,这样你就不会陷入每一个 for循环使用 iₙ .

    我的电脑似乎不喜欢您使用过的“LATIN SUBSCRIPT SMALL LETTER N”(U+2099) 字符,只是将其呈现为 的框。大大降低可读性。确保您的工具/字体支持这种编辑方式。

    PEP8 states Unicode 字符不应该用于标准库中的标识符——它们可能有充分的理由。

    总而言之-除非您有充分的理由,否则不可以,然后仅在单独的数学密集型模块中。我想我可以确信它在某些情况下是有值(value)的。

    关于unicode - 在源文件中使用 Unicode 并且缺少 unicode 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463974/

    相关文章:

    clojure - 管理 clojure 中的括号数量

    c# - 如何将此 C# 工作线程代码与共享数据变量的主线程分离?

    c# - 在 C# 中重写此 If 的最简洁/最惯用的方法

    php - 将 windows-1251 目录名称转换为 unicode(使用 Python)

    c++ - 在 Windows 控制台应用程序中输出 unicode 字符串

    iOS/可读性

    java - 整数列表 -> 长 switch/case - 更好的可读性

    python - 为什么 python string cut 在请求 12 个符号时返回 11 个符号?

    c++ - 如何将 char* 转换为 wchar_t*?