[讨论] 代码风格

不同视角、不同观点、深度探讨,禁止人品和道德攻击

代码风格

函数、变量名中的有多个单词,则应该使用下划线间隔开。单词太多或太长,应该使用常见缩写
38
60%
函数、变量名中的有多个单词,则使用单词首字母大小写变化来断词
25
40%
 
总计票数: 63

everyoung
帖子: 246
注册时间: 2007-09-08 23:06

#16

帖子 everyoung »

变量:小写的前缀_名词,
类或者对象:名词加上表示用途的名词,用大小写区分单词,如:ClassAdapter theClassAdapter = new ClassAdapter()
函数:动宾结构短语,DoSomething()
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28

#17

帖子 flyinflash »


http://geosoft.no/index.html
网站不错。

其它的没有仔细看。
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#18

帖子 猛将兄 »

两种都不错,我经常混用,因为c和java混着写,null和NULL经常都会混用
怎么没人提这个世界上最扯淡的命名方法,非得在结构名或者类名前面加个东西代表他是什么
比如
IAbc说明是Interface接口
StrABC说明是String
绝对是世界上最扯淡的命名方法。关于他的荒谬,我可以写出最少十条来
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

#19

帖子 Strange »

猛将兄 写了:两种都不错,我经常混用,因为c和java混着写,null和NULL经常都会混用
怎么没人提这个世界上最扯淡的命名方法,非得在结构名或者类名前面加个东西代表他是什么
比如
IAbc说明是Interface接口
StrABC说明是String
绝对是世界上最扯淡的命名方法。关于他的荒谬,我可以写出最少十条来
想听一下这10条
ニンニク入れますか?
x60 with gentoo
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28

#20

帖子 flyinflash »

猛将兄 写了:两种都不错,我经常混用,因为c和java混着写,null和NULL经常都会混用
怎么没人提这个世界上最扯淡的命名方法,非得在结构名或者类名前面加个东西代表他是什么
比如
IAbc说明是Interface接口
StrABC说明是String
绝对是世界上最扯淡的命名方法。关于他的荒谬,我可以写出最少十条来
代码是自己写,自己看,您的风格如何当然无所谓,但是,如果是合作开发,您就应该收敛一下。

看来,有空写个加强版 indent 是非常必要的
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28

#21

帖子 flyinflash »

比如
IAbc说明是Interface接口
StrABC说明是String
记得以前看 Flash ActionScript 2.0 时,
它提到所谓的“优良风格”:
a_btn
加 '_btn' 后缀表示 button 对象实例
c_txt
加 ‘_txt' 后缀表示 text 对象实例
……

好是好,但是我觉得太罗唆了。[/quote]
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28

#22

帖子 flyinflash »

因为c和java混着写
最讨厌这种,乱七八糟,简直是*%(!%
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

#23

帖子 greco »

第二个
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
kevin.c
帖子: 145
注册时间: 2008-04-01 12:28

#24

帖子 kevin.c »

第一种 开源软件大多是这种风格
第二种 M$专用风格

我自己写软件用第一种 公司项目只能用第一种
疼狠第二种 看着就不爽
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

#25

帖子 greco »

kevin.c 写了:第一种 开源软件大多是这种风格
第二种 M$专用风格

我自己写软件用第一种 公司项目只能用第一种
疼狠第二种 看着就不爽
?? 照你这么说,许多Java 的开源代码都是 M$ 分格?
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

#26

帖子 HuntXu »

这么说许多ajax的也是M$的风格了 :lol:
HUNT Unfortunately No Talent...
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#27

帖子 猛将兄 »

flyinflash 写了:
因为c和java混着写
最讨厌这种,乱七八糟,简直是*%(!%
这个世界上没有任何一种语言能作完所有事情
语言只是工具,c有c的scope,java有java的scope,两者混合才能发挥最大效能
关于c和java混合的产品,这个世界有无数
各大数据库Oracle,DB2都是,包括BerkeleyDB也是
JVM是C++和Java的混合体
你有什么资格去讨厌这些产品呢?
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#28

帖子 猛将兄 »

Strange 写了:
猛将兄 写了:两种都不错,我经常混用,因为c和java混着写,null和NULL经常都会混用
怎么没人提这个世界上最扯淡的命名方法,非得在结构名或者类名前面加个东西代表他是什么
比如
IAbc说明是Interface接口
StrABC说明是String
绝对是世界上最扯淡的命名方法。关于他的荒谬,我可以写出最少十条来
想听一下这10条
1。 造成理解混淆。一个I,其实可以代表Interface,也可以代表Integer,事实上,早期的I是代表Integer,后期的I是代表Interface,人为产生软件开发代沟。更不要说P有的代表Poiter,有的代表一个自己的Class叫Person的事情了
2。 完全没有必要。这种写法最主要是早期编辑器非常不好用的情况下,为了清晰而产生的。可是正如1所言,现在已经会产生混淆了。当下用emacs或者vim或者任何一种IDE都可以很清楚地标识类型,何苦自己为难自己
3。以后再说,我想看看你们说的好处在哪里
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

#29

帖子 Strange »

1。造成理解混淆。一个I,其实可以代表Interface,也可以代表Integer,事实上,早期的I是代表Integer,后期的I是代表 Interface,人为产生软件开发代沟。更不要说P有的代表Poiter,有的代表一个自己的Class叫Person的事情了
2。 完全没有必要。这种写法最主要是早期编辑器非常不好用的情况下,为了清晰而产生的。可是正如1所言,现在已经会产生混淆了。当下用emacs或者vim或者任何一种IDE都可以很清楚地标识类型,何苦自己为难自己
3。以后再说,我想看看你们说的好处在哪里
我一直觉得,没什么不好
但至少觉得这个1和2不成立,想听听下面的
网上一般认为不好也就是繁琐,其他也没啥

1。
每个项目有每个项目的coding style,看明白了之后,这个项目中不会发生混淆,除非程序没完全按照代码规范来做
一个项目中i既代表integer又代表interface的话,只能说代码规范不好了
退一步说,如果觉得这个辅助的信息没用,读代码的时候完全可以自己忽略,就当没看见,这样和一个普通的变量名称除了繁琐以外有什么特别的区别?
2。
基本没必要还有道理,完全没必要就太绝对了
如果代码打印出来呢?
即使是vim,想要简单方便的很清楚地标识类型的方法是没有的,如果有,一定请教我一下
vs2005记得也没有能直接从ide中直接表示变量类型的方法
3。
我认识的匈牙利的缺点
繁琐,不方便修改。变量长度变长,如果修改变量类型的话,改动大
但是,这个到正是现代ide所能弥补的一点
ide或者emacs/vim都有补完,有方便的搜索/替换功能
4。
所以,虽然网上骂匈牙利命名法的一片,但我觉得,这也只是一个命名法,说不上多好,但也说不上多差
根据程序的需要,用/不用,或者用部分,都是合理的选择
ニンニク入れますか?
x60 with gentoo
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

#30

帖子 Strange »

还有其实lz提到的两种命名法本无好坏,只是正好被两大代码集团引用了而已
所以这就是前面说的代码规范的作用
去参加gnu项目的,就要同意他的代码规范,写出abc_def类似的代码
参加windows项目的,就根据windows代码规范,写出abcDef的代码,仅此而已

纯粹根据自己对于操作系统,对于公司的好恶来评判命名法,是没有什么道理的
ニンニク入れますか?
x60 with gentoo
回复