自从我了解到 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)
因此我的问题是:
最佳答案
我会说不,除非
即使满足所有这些要求,我也会权衡使用的麻烦与增加的可读性,并倾向于坚持使用 ASCII。
确保你给你的团队在什么时候可以接受的严格指导,这样你就不会陷入每一个
for
循环使用 iₙ
.我的电脑似乎不喜欢您使用过的“LATIN SUBSCRIPT SMALL LETTER N”(U+2099) 字符,只是将其呈现为 的框。大大降低可读性。确保您的工具/字体支持这种编辑方式。
PEP8 states Unicode 字符不应该用于标准库中的标识符——它们可能有充分的理由。
总而言之-除非您有充分的理由,否则不可以,然后仅在单独的数学密集型模块中。我想我可以确信它在某些情况下是有值(value)的。
关于unicode - 在源文件中使用 Unicode 并且缺少 unicode 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463974/