命名习惯问题,大家怎么起名的啊?从驼峰转到下划线好不适应啊……

2019-10-25 12:04:41 +08:00
 JCZ2MkKb5S8ZX9pq

驼峰

下划线


6839 次点击
所在节点    Python
38 条回复
cexia
2019-10-25 17:47:51 +08:00
既然提到 PEP8 了,那就按照 PEP8 里的规范做呗。
什么场景驼峰,什么场景下划线,都明确写了啊。
本来就是根据口味来的东西。日常工作若是要统一口味,我跟 PEP8。
ClarkAbe
2019-10-25 18:56:40 +08:00
一个单词全小写,多个单词驼峰,超长下划线
EscYezi
2019-10-25 20:06:40 +08:00
主力 java 的路过,之前写 python 脚本写到一半才发现用的驼峰,索性继续驼峰了,看着比较顺眼(
变量名个人比较注重描述清楚这个变量的作用,长一点没关系,大三的时候汇编课被老师吐槽写的太啰嗦🤣
timer 那个如果我担心自己搞不清,甚至会写成 timerObj
EscYezi
2019-10-25 20:08:55 +08:00
@EscYezi #22 或者根据 timer 的实际作用,比如 sortTimer
noobsheldon
2019-10-25 20:12:26 +08:00
#noqa
byfar
2019-10-25 20:23:28 +08:00
go: 驼峰
rust: 下划线
python: 下划线

写代码时自动切换的路过
sazima
2019-10-25 20:32:06 +08:00
代码里警告太多影响美观
JCZ2MkKb5S8ZX9pq
2019-10-25 22:13:23 +08:00
@EscYezi 或者考虑到 timer 复用次数比较多,宁可 class 的命名复杂一点长一点。
koebehshian
2019-10-25 22:58:48 +08:00
类名用形容词,变量用名词,函数名用动词
akira
2019-10-25 23:11:23 +08:00
大小写敏感的语言 用驼峰写的代码看起来好累 眼睛都要看花了
oneisall8955
2019-10-26 14:30:28 +08:00
Java 习惯用驼峰,类 shell 脚本习惯用下划线
nightwitch
2019-10-26 17:46:23 +08:00
C++变量驼峰,函数用下划线,和 stl 的风格保持一致
python 照 pep8 的风格来
secondwtq
2019-10-26 18:12:13 +08:00
如果在这两者之间摇摆不定,不如结合起来一块用吧

OCaml 一般是用 underscore 的,但是语法要求一些结构(比如 Constructor 和 Module )必须以大写字母开头(语法强制的哦),于是就出现了这种 https://github.com/ocaml/ocaml/blob/79f1c734621ea75bfacaed9ea20ebef7479194b2/typing/env.ml#L77 “首字母大写的 underscore”
secondwtq
2019-10-26 18:39:04 +08:00
另一个有意思的现象(和楼主的 append 有点关系),C/C++ 其实是没有官方推荐的变量命名规范的(可能是有,但是就算有也没法 mandate ),每个项目的规范都不太一样
于是 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

不过 acronym 不能完全避免,任何一个专业领域都少不了 acronym,像什么 AST,CFG,BB,SCEV 之类的出现在编译器的代码中其实都正常,这些东西在学术界和工业界都有认知,问题对于一个项目来讲,很多类是项目独有的,写 acronym 就会让人摸不到头脑,至于 Loop 的变量名写成 L 之类的更是没啥必要
JCZ2MkKb5S8ZX9pq
2019-10-26 22:40:11 +08:00
@secondwtq 是的,所以我现在暂时是这么考虑的。
class 调用之后的名字,使用比较广泛,所以这个尽量缩减。
在我的例子里,这个就是 timer。
然后类名称就长一点具体一点,再加上大写以区分了。

然后有些类我作为全局量在用,统一配置在 config/setting 里,调用就暂时就全大写了,类似常量(这个还有点犹豫)。
比如一些目录的设置,或者一些网址,需要根据账号等参数计算,就统一放在一个类里了。
然后使用时的名称就暂时用全大写 PATH.product_image(pid) or PATH.brand_list(bid)
但这样其实又不符合常量用全大写的规范,但是 path/url/account 这类词用小写又太容易跟局部变量撞车了,起太长又不大方便。

---

另外首字大写+下划线的话,在几个指导文档里,是作为反面典型的。。。/捂脸
lolizeppelin
2019-10-27 09:40:08 +08:00
python 使用下划线源自于 linux c 代码风格

习惯这种风格以后看 linux 里相关 c 代码比较舒服
Nick66
2019-10-27 12:02:58 +08:00
遵循所写语言的规范,不要自己创造规范
jin7
2019-10-27 16:47:51 +08:00
把限制从 80 改成 120 ~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/612874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX