另外补充下类似 Class Timer() 的问题。
大家习惯怎么处理这类命名呢?
1
okwork 2019-10-25 12:11:48 +08:00 via Android
py 里面也有驼峰,是留给类名用的
|
2
ClericPy 2019-10-25 12:15:03 +08:00 1
Python 又不是 go, 想驼峰就驼峰呗, 用 go 的时候 linter 直接告诉我别用下划线, 每次大小写按 shift 按的想死... 左 shift 右 shift.... 如果下划线, 只按左 shift 就够了, 而且驼峰有些 is of 什么的真不喜欢大写....
|
3
ayase252 2019-10-25 12:22:29 +08:00
|
4
by73 2019-10-25 12:29:30 +08:00
难道大家都不用 IDE 补全的么?无论驼峰还是下划线,基本都只是在定义的时候用一次,后面直接全小写不带下划线也可以直接提示出来。
|
5
JCZ2MkKb5S8ZX9pq OP @okwork 类名是首字大写吧,我说的是小驼峰,第一个首字小写的…… 以前落下的习惯
|
6
JCZ2MkKb5S8ZX9pq OP @ClericPy 打字习惯我倒还好,左右 shift 双持,英文写作速度还行。所以反而很少用下划线。
|
7
lc7029 2019-10-25 12:31:32 +08:00 3
汉字变量名,完事了
|
9
JCZ2MkKb5S8ZX9pq OP @lc7029 大哥你认真的吗?
|
10
lc7029 2019-10-25 12:36:12 +08:00 1
@JCZ2MkKb5S8ZX9pq 认真的,python 和 mysql 支持为什么不能用
|
11
cquan 2019-10-25 12:39:03 +08:00
一直用驼峰( ̄▽ ̄)"
|
12
JCZ2MkKb5S8ZX9pq OP @cquan 要考虑为将来团队协作做准备啊 我也是最近才开始转
|
13
JCZ2MkKb5S8ZX9pq OP @lc7029 python 我个人不习惯用中文命名,注释和 log 有时候会写中文。
数据库的话真的不行,mongodb 里 key 是重复占空间的,大点的库恨不得映射一套缩写。。。 |
14
xuanwu 2019-10-25 12:59:12 +08:00
+1 @lc7029。最近的大疆机甲大师也用了中文 Python: https://www.v2ex.com/t/612749#reply0
中文命名风格可以复用于多种语言(自己用过的有 Java,JS, TS,SQL 等),比如要区分类名的话加个后缀"XX 类“。下划线、驼峰都不需要,也是中文的一个优势。 |
16
fancy111 2019-10-25 14:35:41 +08:00
不要纠结命名,差不多能看懂就行。
搞不懂说考虑团队协作的,难道你们是机器人吗? |
17
Immortal 2019-10-25 14:39:04 +08:00
我习惯是:
1 脚本下划线 静态语言 2 小驼峰 ,因为 go 大小写涉及到作用域,导出类型只能大驼峰 |
18
ClericPy 2019-10-25 15:48:26 +08:00
@otakustay 小学的键盘指法教学... shift 要用离次要键位远的那一个, 符合人体工...
我不反感左手按 shift 也是近 20 年苦练 cs 的成果 @JCZ2MkKb5S8ZX9pq 因为你以前驼峰按的多了, 自然舒服, 我现在也在强制练习了 反正对 Python 来说, 讲的就是一个灵活, 在灵活的基础上, 一定要保证前后一致, 这样会避免很多小毛病. |
19
wangyzj 2019-10-25 15:58:30 +08:00
python 我习惯蛇形
其他的驼峰 |
20
classyk 2019-10-25 17:08:28 +08:00 1
最近代码看多了,觉得汉字变量名真 TMD 好。
驼峰有些也看着不舒服,下划线输入起来麻烦而且长 反正没有完美的解决方式。 |
21
cexia 2019-10-25 17:47:51 +08:00
既然提到 PEP8 了,那就按照 PEP8 里的规范做呗。
什么场景驼峰,什么场景下划线,都明确写了啊。 本来就是根据口味来的东西。日常工作若是要统一口味,我跟 PEP8。 |
22
ClarkAbe 2019-10-25 18:56:40 +08:00 via Android
一个单词全小写,多个单词驼峰,超长下划线
|
23
EscYezi 2019-10-25 20:06:40 +08:00 via iPhone
主力 java 的路过,之前写 python 脚本写到一半才发现用的驼峰,索性继续驼峰了,看着比较顺眼(
变量名个人比较注重描述清楚这个变量的作用,长一点没关系,大三的时候汇编课被老师吐槽写的太啰嗦🤣 timer 那个如果我担心自己搞不清,甚至会写成 timerObj |
25
noobsheldon 2019-10-25 20:12:26 +08:00 via Android
#noqa
|
26
byfar 2019-10-25 20:23:28 +08:00
go: 驼峰
rust: 下划线 python: 下划线 写代码时自动切换的路过 |
27
sazima 2019-10-25 20:32:06 +08:00
代码里警告太多影响美观
|
28
JCZ2MkKb5S8ZX9pq OP @EscYezi 或者考虑到 timer 复用次数比较多,宁可 class 的命名复杂一点长一点。
|
29
koebehshian 2019-10-25 22:58:48 +08:00
类名用形容词,变量用名词,函数名用动词
|
30
akira 2019-10-25 23:11:23 +08:00
大小写敏感的语言 用驼峰写的代码看起来好累 眼睛都要看花了
|
31
oneisall8955 2019-10-26 14:30:28 +08:00
Java 习惯用驼峰,类 shell 脚本习惯用下划线
|
32
nightwitch 2019-10-26 17:46:23 +08:00
C++变量驼峰,函数用下划线,和 stl 的风格保持一致
python 照 pep8 的风格来 |
33
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” |
34
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 之类的更是没啥必要 |
35
JCZ2MkKb5S8ZX9pq OP @secondwtq 是的,所以我现在暂时是这么考虑的。
class 调用之后的名字,使用比较广泛,所以这个尽量缩减。 在我的例子里,这个就是 timer。 然后类名称就长一点具体一点,再加上大写以区分了。 然后有些类我作为全局量在用,统一配置在 config/setting 里,调用就暂时就全大写了,类似常量(这个还有点犹豫)。 比如一些目录的设置,或者一些网址,需要根据账号等参数计算,就统一放在一个类里了。 然后使用时的名称就暂时用全大写 PATH.product_image(pid) or PATH.brand_list(bid) 但这样其实又不符合常量用全大写的规范,但是 path/url/account 这类词用小写又太容易跟局部变量撞车了,起太长又不大方便。 --- 另外首字大写+下划线的话,在几个指导文档里,是作为反面典型的。。。/捂脸 |
36
lolizeppelin 2019-10-27 09:40:08 +08:00 via Android
python 使用下划线源自于 linux c 代码风格
习惯这种风格以后看 linux 里相关 c 代码比较舒服 |
37
Nick66 2019-10-27 12:02:58 +08:00
遵循所写语言的规范,不要自己创造规范
|
38
jin7 2019-10-27 16:47:51 +08:00
把限制从 80 改成 120 ~~
|