目前,java版支付中心處在研發(fā)階段秕衙。下午蠢甲,特有鉆研精神的云龍同學(xué)饒有興趣的問(wèn)我“戰(zhàn)哥,你覺(jué)得表字段用哪種命名方式比較好呢据忘?”
所用的db是mysql鹦牛,他是想征求一下我的看法,是用駝峰式命名還是小寫(xiě)加下劃線方式勇吊。
我直截了當(dāng)?shù)卣f(shuō)用駝峰式曼追。為什么? 我認(rèn)為汉规,像java語(yǔ)言或.net語(yǔ)言礼殊,實(shí)體類(lèi)的屬性一般是遵從駝峰式命名的(稍有不同的是java一般首字母小寫(xiě),而.net是首字母大寫(xiě))针史。我們的程序里的數(shù)據(jù)訪問(wèn)層一般均采用ORM框架晶伦。如果表字段是小寫(xiě)字母+下劃線,那么啄枕,相應(yīng)的POJO/POCO實(shí)體類(lèi)的屬性也會(huì)是小寫(xiě)字母+下劃線婚陪,這樣,違背了駝峰式命名規(guī)范泌参,有違代碼的整潔度脆淹。
接著,如我所期沽一,云龍問(wèn)“那你支付中心對(duì)外的api接口參數(shù)為什么用小寫(xiě)+下劃線的方式呢未辆?”
我答道,對(duì)外提供的接口锯玛,
- 如果用駝峰式。 首先兼蜈,我們用word編寫(xiě)接口說(shuō)明文檔時(shí)攘残,在參數(shù)表格列里輸入?yún)?shù)名后,如果按tab鍵为狸,則word默認(rèn)首字母是大寫(xiě)的歼郭。而如果恰好我們的首字母是小寫(xiě)時(shí),如果我們?cè)诰帉?xiě)時(shí)忽略了這個(gè)細(xì)節(jié)辐棒,這就會(huì)給對(duì)接者帶來(lái)疑惑(產(chǎn)品設(shè)計(jì)上有一條重要的原則:Don't Make Me Think病曾,同樣適用于軟件設(shè)計(jì)); 更甚之漾根,如果簽名規(guī)則要求的簽名原串包括參數(shù)名時(shí)泰涂,那么,因字母大小寫(xiě)所致的驗(yàn)簽失敗往往不那么容易排查出來(lái)辐怕,進(jìn)而造成雙方的“不必要”溝通逼蒙。
- 如果用小寫(xiě)+下劃線。 首先寄疏,這種方式規(guī)避了上面駝峰式命名的不足是牢。 其次,考慮到商戶對(duì)接存在不同的編程語(yǔ)言如php/java/.net陕截,跨語(yǔ)言程序員之間也都會(huì)認(rèn)可驳棱。
云龍和偉業(yè)聽(tīng)后表示贊同。
我解釋农曲,我們?cè)诮涌陂_(kāi)發(fā)和商戶對(duì)接支持這些事情上踩過(guò)的坑太多了社搅,逐漸的就要考慮這些細(xì)節(jié)。
【另面觀】
其實(shí)乳规,也許是從事IT項(xiàng)目管理的職業(yè)病罚渐,我喜歡考慮項(xiàng)目成本,系統(tǒng)設(shè)計(jì)方面驯妄,始終堅(jiān)持通過(guò)合理設(shè)計(jì)規(guī)避不必要的溝通和互撕荷并。
像上面支付接口的參數(shù),如果不考慮命名形式青扔,用駝峰式源织,勢(shì)必會(huì)增加后續(xù)甲乙雙方聯(lián)調(diào)過(guò)程中的溝通成本翩伪。那么,倘若我們改為小寫(xiě)加下劃線的形式谈息,就會(huì)規(guī)避這些真的是不必要的溝通缘屹。 ——這就是軟件意識(shí)。
有些程序員一天的工作就是商戶接口對(duì)接聯(lián)調(diào)支持侠仇。有些領(lǐng)導(dǎo)看到下屬員工一天忙碌的對(duì)接轻姿,認(rèn)為其工作很飽滿。
【延伸】
我也饒有興趣逻炊,忽然在想互亮,我們支付中心對(duì)外提供的這種接口在技術(shù)層面叫作什么呢? api是應(yīng)用程序接口余素,即程序包里的公開(kāi)的方法及對(duì)這些方法的說(shuō)明豹休。而這種通過(guò)http發(fā)布的接口,是什么呢桨吊? rpc接口威根?rmi接口?webapi视乐? 我也去找云龍和偉業(yè)探討洛搀,他們說(shuō)就是接口嘛,笑我太愛(ài)琢磨了佑淀。
我常常就這樣較真兒姥卢,當(dāng)然,我也不認(rèn)為這種較真兒是什么缺點(diǎn)渣聚。于是独榴,為了一個(gè)細(xì)節(jié),我會(huì)去查看好些技術(shù)帖子和blog奕枝。于是棺榔,我也再了解了一下rpc、web Service隘道、web api症歇。
今天周六,加班的同事早已回家谭梗。我從洗手間回到工位忘晤,辦公區(qū)周?chē)幕韬冢巴馊h(huán)上疾馳的車(chē)輛激捏,CBD夜景燈火闌珊设塔,不覺(jué)中渲染出我的孤寂。大周末的远舅,是時(shí)候回家陪陪孩子做點(diǎn)家務(wù)了闰蛔。