來打一架吧!
大家好,我是魚皮,今天這篇文章,雖然多少會(huì)帶點(diǎn)戾氣,但對(duì)學(xué)編程的小伙伴來說,應(yīng)該還是有點(diǎn)啟發(fā)的。
事情是這樣的,昨天晚上,我直播帶大家寫了一個(gè)批量處理表格的程序,用于給之前參與活動(dòng)的同學(xué)批量返現(xiàn)。
但是在寫程序的過程中,出現(xiàn)了一些讓我感覺不做好的彈幕發(fā)言。
比如我在定義 Java 對(duì)象的屬性時(shí),用了拼音來命名:
//?支付姓名
String?zhiFuXingMing;
然后有同學(xué)說了:你是不是程序員啊,寫代碼怎么能用拼音來命名呢?

再比如我在定義金額屬性時(shí),使用了 double 類型:
double?cost;
然后有同學(xué)說了:呵呵,金額竟然用 double 類型?

再往下寫,等寫到將兩個(gè)表格中的數(shù)據(jù)根據(jù)某一列相同的值進(jìn)行合并時(shí),我使用了比較原始的 for 循環(huán) + HashMap 的寫法。

然后就有同學(xué)說了:用 Lambda ?。∮?Lambda ?。∮?Lambda ?。?/p>
看了這些彈幕,我只有一個(gè)感觸:大家被八股文和所謂的 “編程習(xí)慣” 害慘了。
他們說的沒錯(cuò),變量名是應(yīng)該使用正兒八經(jīng)的英文、遵循駝峰式或下劃線命名法;在企業(yè)中,金額相關(guān)的字段的確不應(yīng)該用 double 這種容易丟失精度的數(shù)據(jù)類型;Java 8 的 ?Lambda 表達(dá)式的確寫起來方便又精簡(jiǎn)。
但是,沒錯(cuò)的寫法就一定是最合適的么?
首先,我寫的這個(gè)表格處理程序是一次性的工具,只是 自己做自己用 。因?yàn)樽詈蟪绦蛏傻谋砀袷怯糜谵D(zhuǎn)賬,所以對(duì)于程序邏輯 正確性 的要求最高。
使用拼音主要是因?yàn)楸砀裰杏泻芏嗝Q相似的列,比如 “支付昵稱”、“支付賬號(hào)”、“支付姓名”、“賬號(hào)昵稱”,通過拼音可以增加字段的區(qū)分度,更容易引起我的注意,不容易搞錯(cuò)。
使用 double 類型來接受表格中的金額數(shù)據(jù)主要是因?yàn)槲液?確信 兩點(diǎn):
大家的訂單精度絕對(duì)不超過小數(shù)點(diǎn)后 2 位,范圍絕對(duì)不超過 10000。 不需要對(duì)金額進(jìn)行任何運(yùn)算。
在這些情況下,我完全沒有必要去使用 BigDecimal 之類的精度更高的數(shù)據(jù)類型,反而不確定如果用了后,表格處理庫還能不能順利地執(zhí)行。
而之所以不用 Lambda 表達(dá)式,一方面是因?yàn)?Lambda 表達(dá)式雖然簡(jiǎn)潔,但卻 不夠直觀 ,在直播時(shí)不能很好地讓大家理解;另一方面也是自己很少用 Labmda 表達(dá)式去寫這種邏輯,對(duì)于一個(gè) 求穩(wěn) 的程序來說,我不想去冒險(xiǎn)。此外,就我的需求來說,這兩種方式寫起來都不麻煩,Lambda 表達(dá)式也不能在開發(fā)效率上帶來很大的優(yōu)勢(shì)。
這就是我的理由。
沒有絕對(duì)正確的代碼,更沒有完美的代碼,只有相對(duì)合適的代碼。你只需要 根據(jù)實(shí)際的場(chǎng)景 去寫代碼,能夠給出自己的理由,這就夠了,千萬不要墨守成規(guī)!
說到這里,又讓我想起來之前我在寫 Java 的時(shí)候,代碼縮進(jìn)是空 2 格,然后一些同學(xué)就不滿了:代碼縮進(jìn)不是空 4 格么,你一個(gè)大廠程序員,怎么這么不規(guī)范?。?/p>
也是同樣的道理,阿里的 Java 代碼規(guī)范是縮進(jìn) 4 格,但谷歌的 Java 代碼規(guī)范是縮進(jìn) 2 格呀!
沒有絕對(duì)的規(guī)范,只需要在團(tuán)隊(duì)內(nèi)部保持統(tǒng)一,能夠發(fā)揮規(guī)范的作用(保證代碼質(zhì)量、穩(wěn)定性、提高代碼可維護(hù)性等),這就足夠了。
所以,希望所有學(xué)編程的朋友們,不僅要學(xué)習(xí)他人好的編程習(xí)慣;更重要的是在寫代碼、做技術(shù)選型時(shí),想清楚你的目的,根據(jù)實(shí)際情況去思考、靈活變通。你會(huì)發(fā)現(xiàn),編程真的是一門藝術(shù)!
在某些情況下,你寫有 bug 的代碼也未必不是一種正確的選擇。
以上就是本期分享。我是魚皮,點(diǎn)贊 + 在看 還是要求一下的,祝大家都能心想事成、發(fā)大財(cái)、行大運(yùn)。

往期推薦
