下面這樣的一串代碼相信很多人都寫(xiě)過(guò),但可能除了你自己沒(méi)有人看得懂:
for range in range(n):
for j in range(m):
for k in range(l):
temp_value = X [i] [j] [k] * 12.5
new_array [i] [j] [k] = temp_value + 150
這并不是一段好的的代碼,為了圖省事,使用了簡(jiǎn)單而無(wú)實(shí)際含義的變量及數(shù)值,看起來(lái)在任何程序中都可以用,對(duì)于看的人來(lái)說(shuō)就是災(zāi)難,因?yàn)橐氚胩旎蛘卟榭瓷舷挛牟胖滥銓?xiě)的變量是什么意思,給別人修改和調(diào)試帶來(lái)麻煩。
所以如果你的代碼不僅僅是給自己看的,就盡量不要再這么寫(xiě),多使用 描述性變量名稱(chēng) 和 命名常量 編寫(xiě)代碼,養(yǎng)成一個(gè)變量命名的好習(xí)慣。
如果你依然在編程的世界里迷茫,可以加入我們的Python學(xué)習(xí)扣qun:784758214,看看前輩們是如何學(xué)習(xí)的。交流經(jīng)驗(yàn)。從基礎(chǔ)的python腳本到web開(kāi)發(fā)、爬蟲(chóng)、django、數(shù)據(jù)挖掘等,零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)的資料都有整理。送給每一位python的小伙伴!分享一些學(xué)習(xí)的方法和需要注意的小細(xì)節(jié),點(diǎn)擊加入我們的 python學(xué)習(xí)者聚集地
來(lái)看看用標(biāo)準(zhǔn)變量怎么寫(xiě)上面的代碼:
PIXEL_NORMALIZATION_FACTOR = 12.5
PIXEL_OFFSET_FACTOR = 150
for row_index in range(row_count):
for column_index in range(column_count):
for color_channel_index in range(color_channel_count):
normalized_pixel_value = (
original_pixel_array[row_index][column_index][color_channel_index]
* PIXEL_NORMALIZATION_FACTOR
)
transformed_pixel_array[row_index][column_index][color_channel_index] = (
normalized_pixel_value + PIXEL_OFFSET_FACTOR
)
雖然代碼量增大了,但是別人一看就能看懂,不管隔多久再來(lái)看很快就能明白,而第一段代碼,過(guò)一陣再看你還能明白是干什么的么?
好的程序員都會(huì)遵守的代碼變量命名規(guī)則:
-
變量名應(yīng)該能夠描述變量表示的信息。
-
優(yōu)先考慮代碼的易懂性,而不是編寫(xiě)代碼的速度。
- 采用標(biāo)準(zhǔn)的命名約定,做出一個(gè)全局決策而不是多個(gè)本地決策。
所以命名不標(biāo)準(zhǔn)的原因主要有兩個(gè):
-
無(wú)益/混淆/模糊的變量名稱(chēng)
- 未命名的“魔法”常數(shù)
簡(jiǎn)單來(lái)說(shuō),不要再像下面這樣命名變量:
X, y, xs, x1, x2, tp, tn, clf, reg, xi, yi
要糾正也很簡(jiǎn)單,遵守下面三條簡(jiǎn)單規(guī)則即可:
-
變量/函數(shù)名稱(chēng):用小寫(xiě)字母表示,中間用下劃線(xiàn)分割
-
常量:用大寫(xiě)字母
- Class 類(lèi):首字母大寫(xiě),其余小寫(xiě)
詳細(xì)來(lái)說(shuō)有這么些注意事項(xiàng):
-
X
和y
:
X 和 y 你可能已經(jīng)看過(guò)幾百次,知道它們的功能,但對(duì)于閱讀代碼的其他開(kāi)發(fā)人員來(lái)說(shuō),這可能并不明顯。所以,不妨使用描述這些變量是代表什么的名稱(chēng),例如:house_features 和 house_prices。
-
value
:
value 值具體是什么呢?可能是一個(gè)
velocity_mph
,
customers_served
,
efficiency
,
revenue_total
。不同的 value 最后加一個(gè)詳細(xì)的前綴。
-
temp
:
臨時(shí)變量雖然可以用 temp 表示,但最好還是給它一個(gè)有意義的名稱(chēng)。比如是需要轉(zhuǎn)換單位的值,像下面這樣寫(xiě):
#不要這樣做
temp = get_house_price_in_usd(house_sqft,house_room_count)
final_value = temp * usd_to_aud_conversion_rate
#這樣做
house_price_in_usd = get_house_price_in_usd(house_sqft,
house_room_count)
house_price_in_aud = house_price_in_usd * usd_to_aud_conversion_rate
- 縮寫(xiě):
如果使用縮寫(xiě)變量,最好提前申明縮寫(xiě)變量名的含義,比如
usd, aud, mph, kwh, sqft
這些。與普通縮寫(xiě)的團(tuán)隊(duì)其他成員達(dá)成一致并寫(xiě)下來(lái)。然后,在代碼審查中,確保執(zhí)行這些書(shū)面標(biāo)準(zhǔn)。
- 避免機(jī)器學(xué)習(xí)特定的縮寫(xiě):
比如盡量不要用
tp
,
tn
,
fp
,
fn
,這些縮寫(xiě)變量,而是使用完整的變量代替:true_positives,true_negatives,false_positives,和false_negatives。
導(dǎo)致錯(cuò)誤變量名直接原因?
下面這兩個(gè)原因是寫(xiě)出錯(cuò)誤變量名的重要原因:
-
希望保持變量名稱(chēng)簡(jiǎn)短
- 將公式直接轉(zhuǎn)換為代碼
根據(jù)上面的公式,一般情況下很可能就直接寫(xiě)成:
temp = m1 * x1 + m2 *(x2 ** 2)
final = temp + b
這是看起來(lái)像是機(jī)器編寫(xiě)的代碼,雖然計(jì)算機(jī)最終將運(yùn)行它,但人看的次數(shù)更多,最好編寫(xiě)適合人理解的代碼:
house_price = price_per_room * rooms + price_per_floor_squared *(floor** 2)
house_price = house_price + expected_mean_house_price
不要使用魔法數(shù)字
魔法數(shù)字就是不是變量名的恒定值,通常用于單位轉(zhuǎn)換。但這樣的轉(zhuǎn)換代碼是錯(cuò)誤的:
final_value = unreverted_value * 1.61
final_quantity = quantity / 60
value_with_offset = value + 150
沒(méi)人理解 1.61、60 表示什么單位,自然也就看不懂轉(zhuǎn)換后的變量含義,所以最好給這個(gè)轉(zhuǎn)換數(shù)值賦予變量名,比如:
USD_TO_AUD_CONVERSION_RATE = 1.61
price_in_aud = price_in_usd * USD_TO_AUD_CONVERSION_RATE
REVOLUTIONS_PER_MINUTE = 60
revolution_count = minutes_elapsed * REVOLUTIONS_PER_MINUTE
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進(jìn)階,都?xì)g迎
以上就是在代碼變量命名過(guò)程中需要注意的一些細(xì)節(jié)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
