PHP同事(本组组长)不懂英文,变量名命名有时会张冠李戴?该提醒他么?

2013-05-31 11:10:29 +08:00
 picasso250
数据库命名也不好,方法名命名也不好。我每次看到他的变量名,都不敢通过他的变量名去推测意思,要上溯一下源码。
而且我还觉得有些命名特别别扭。
于是无明火起。曾经用比较委婉的语气指出他数据库表名命名不合理。但指出的时间比较晚,他都把表建好了。他也没改。我也没坚持。
其实他的代码bug还是比较少的,精于SQL。
我是否应该继续坚持“纠正”他。或者有什么其他好方法?
6338 次点击
所在节点    程序员
38 条回复
isy
2013-05-31 12:31:25 +08:00
难,习惯难改,如果是不好相处的,反问你一句 , 你自己的命名很好么!
xunyu
2013-05-31 12:32:50 +08:00
建议用拼音代替吧
alexrezit
2013-05-31 12:33:05 +08:00
这种人最可怕. 超级可怕.
Zhang
2013-05-31 12:33:57 +08:00
拼音更加可怕!!
zhttty
2013-05-31 12:34:19 +08:00
既然他是你组长,那么你就要习惯他的命名,作为团队,很多标准是以leader为首的。
qiukun
2013-05-31 12:47:19 +08:00
php 木有好用的更名工具吗?
qiukun
2013-05-31 12:47:34 +08:00
前几天群里还在说干脆用中文
Livid
2013-05-31 12:48:35 +08:00
你把他的命名列出来让大家看看吧?
raincious
2013-05-31 13:01:51 +08:00
@qiukun 真的,如果英文真的不好,那么干脆用中文算了(笑)。

我写程序的时候关于函数名倒是给自己定了个规矩,发上来给大家看看,顺便求参考和建议:

其实很简单的:

1: 命名规则,按照C语言常规的第二个单词首字母wordWord()分名法。
2: 第一个单词是动词,后面的单词是名词/要操作的对象
所以,常规的类似这样: getContent(); fetchContent();

当然,如果两个单词描述不完就会出现很长的名字:
最糟糕的类似这样: getContentByKeyName(); fetchContentFromDatabaseUsingEPollAndKeepMyCafeWarm();


3: 对于方法名,尽量只是用一个单词命名,因为操作对象已经有了,比如:
$content->fetch();

如果一个单词说明不了,就用常规规则:
$content->fetchByKeyName();

当然,类似还可以用fetch_by_keyname,只要形成一个标准,在程序里一直这样命名就可以了。
hongyz
2013-05-31 13:54:31 +08:00
我也有这方面的困扰,特别是看了Robert Martin的《Clean Code》之后。
感觉自己有干净代码强迫症了,看到团队成员的代码,命名不规范,无节操的缩进,提交代码库不写日志等等。相当痛苦。
遇到技术不好的技术经理,就认倒霉吧。
这种编程修养是很难调整过来的,年纪大的话。
PrideChung
2013-05-31 14:17:52 +08:00
@raincious iOS程序员表示对 fetchContentFromDatabaseUsingEPollAndKeepMyCafeWarm(); 这种命名十分习惯。
一开始还会给这类方法命名写类似这样的注释:
// fetch content from database using epoll and keep my cafe warm
后来发现注释不过是把驼峰式的方法名改成小写,然后用空格把单词分开了而已,默默删掉……

反而不喜欢 getContent(); 这样的命名,因为完全不知道get的是什么Content,类似的还有 getData() 之类的,说了等于没说。

果然是被洗脑了么,现在连写PHP的代码变量方法名都是死长死长的。
qiukun
2013-05-31 14:21:52 +08:00
@raincious
c 多用 under_line 式
cpp 多用 camelCase

做 App 而非 Lib ,团队又都使中文的话。中文命名没问题。具体可以把输入法调成半角的。(I'm serious.)
XDA
2013-05-31 14:22:12 +08:00
@PrideChung 你是在简介表达xcode的代码补全很强大么?
laihj
2013-05-31 14:26:12 +08:00
拼音吧。不懂英文也不能三天两头能解决的事,你提醒他什么,去学英文?
jiangplus
2013-05-31 14:28:55 +08:00
我的话直接踢了……
raincious
2013-05-31 14:31:03 +08:00
@qiukun 是的是的,我知道你是serious。

看到你上一个帖子我还在PHP里面将信将疑的试了下,结果真的可以。

瞬间汉语编程半满血复活,我真是笑到不行了。

function 相加($加数, $被加数) {
return $加数 + $被加数;
}

echo (相加(1, 1)); // 2
sojingle
2013-05-31 14:34:19 +08:00
@PrideChung 赞同!不是写开源组件的话,大多都不用再写注释了...
Golevka
2013-05-31 16:40:25 +08:00
顿时感觉我的Wait4Sema4也很无节操= =
jjx
2013-05-31 17:18:20 +08:00
如果是团队 , 表和字段应该是发在wiki上让全体开发人员审评通过, 因为这个可能所有人都要用

一个人开发就没有这个约束

不过很多行业软件的英文不好命名,就是专业的也弄不好,很多时候知其大意就好了
denger
2013-05-31 18:35:26 +08:00
@PrideChung
个人觉得这种 fetchContentFromDatabaseUsingEPollAndKeepMyCafeWarm 名命非常不友好。一个函数名应该只是传达这个是 “做什么的”,而无需要告诉别人它是 “怎么做的”(写注释的作用也是如此,大多数情况下)。 fetchContent 即可,简单明了,对于调用者不需要知道你用的是 EPoll实现还是从数据库中查。


>反而不喜欢 getContent(); 这样的命名

关键要看上下文,现在基本上各种语言已经支持 OOP 了。如果是这样呢:

class Topic:

def getContent(self):
// do something..

难道调用者会不知道 topic.getContent() 是干什么用么? 如果非要要写成 getTopicContent,那就有些废话了。当然,除非你用的是 C 语言或类似.

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

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

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

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

© 2021 V2EX