天天想变量名翻字典都头疼,想要尝试用中文命名变量。
刚开始就遇到一个问题,英文下面我可以用OrderType
表示类名,orderType
表示变量。
换到中文,我没想到有什么好的处理方法,有没有有经验的大佬可以讲讲一些经验。
1
kop1989 2021-02-03 17:31:59 +08:00
扫了眼易语言的语法。
好像确实不好区分变量 /对象与类名。 找到的例子: 猜数字 猜 = 创建 猜数字(); //猜数字 猜 = 创建 全自动猜数字(); 猜.猜(); |
2
renmu123 2021-02-03 18:09:34 +08:00 via Android
动物类,xx 动物,xx 动物实例
|
3
eason1874 2021-02-03 18:27:15 +08:00
这有啥好头疼的,直译就行了,不用在意英文语法,怕忘记就在注释写清楚用途
|
4
lululau 2021-02-03 18:55:01 +08:00 via iPhone
中文一样的,LeiXing leiXing
|
5
lululau 2021-02-03 18:56:34 +08:00 via iPhone
难道你说的中文是指汉字。。。切换输入法不累吗,你不累电脑还累呢
|
6
wudicgi 2021-02-03 18:58:30 +08:00
别想了,不好用,还是翻词典吧
|
7
wudicgi 2021-02-03 19:02:01 +08:00
英文名称即使用的不是太精确也比中文区分度好,像 type, genre; class, category; property, attribute; number, count 这些中文该用什么对应
|
8
secondwtq 2021-02-03 19:09:53 +08:00 1
我举两个类似的例子:
引用 https://v2ex.com/t/612874#r_8089400 这里面的: > LLVM 一开始用了以 camelcase 为主的命名方案,具体来说是类型名,变量名(包括局部变量和成员变量),用 UpperCamelCase,函数名是 lowerCamelCase 。 > 但是后来发现一个问题,比如我有一个变量的类型是 MemorySSAUpdater,那么按照命名规范,我不能把它命名成 MemorySSAUpdater,因为会和类型名冲突,现在的解决方案是取首字母 acronym 命名成 MSSAU 。这种情况在整个仓库里十分广泛: https://github.com/llvm/llvm-project/blob/734c74ba14be0f4421ccd9f720e5b9309248e0f7/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp#L709 感受一下 > 但是这种命名多了就会十分奇怪,看代码必须先要熟悉这些奇怪的缩写才能看得下去 > 于是现在有个 proposal 就是把变量命名从 UpperCamelCase 变成 lowerCamelCase,这样我就直接命名成 memorySSAUpdater 就行了: https://llvm.org/docs/Proposals/VariableNames.html 当时这个事在邮件列表里面吵了半天 ... 同一帖子上一楼提到,一些函数式编程语言强制要求某些结构使用特定的命名规范,比如在 OCaml 中,constructor 和 module 的名称必须以大写开头,而 Haskell 中类型和 constructor 必须以大写开头。刚开始学的时候感觉有点奇怪不过没太在意,后来也就习惯了。 但是后来我自己写语言抄 OCaml 的时候就发现问题了,通过这种语言设计上的小动作,编译器实际省下了很多工作——正则一匹配就知道这个标识符到底是个值还是个 module,同样是命名空间的访问,value.field 肯定是访问一个 record 中的值,Module.value 肯定是访问模块中的值,Module.Submodule.value.field 肯定是嵌套模块访问 + record 访问。 而类似的问题在 C++ 中的解决方案是引入两种语法结构: "::" 用于静态命名空间的访问,"." 用于实例命名空间的访问。 现在我自己要解决这个问题,要么抄 OCaml 的,把命名规范搞得不像个“正常语言”,要么学 C++ 的,多占几个符号,多加几条规则,还有一种方法是我 parser 开洞,不通过任何语法层级的东西来 disambiguate,不过那样 parser 跟 C++ 的就差不多屎了。 现在我已经放弃在文本层面解决这个问题了 ... |
9
agagega 2021-02-03 19:13:34 +08:00 via iPhone
@secondwtq 对编译器来说 C 语言这样不在词法上区分标志符和类型的做法倒没啥,但对一些基于正则的语法高亮 /格式化工具就挺麻烦了
|
11
handle233 2021-02-03 21:40:56 +08:00
Visual C++早就支持中文标识符了,你也可以 typedef 一下用中文来表示 int,但是,英文写代码速度会快很多。
|
12
Heartbleed 2021-02-03 22:16:29 +08:00 via Android
我觉得用拼音挺正常的,有些业务涉及的变量或字段太多,总不能一个个想对应的英文吧。比如股票交易系统...
|