咬文嚼字幫變數取名字

閱讀時間約 7 分鐘
寫程式時,很傷腦筋的一件事,就是變數的名稱該怎麼取。其實變數名稱隨便取,並不會影響程式的正確性,但對程式的可讀性,以及後續的維護,那可就影響深遠了。就好像網址一樣,要取得好,才容易辨識、記憶。對企業而言,網址是兵家必爭之地,被網路蟑螂給捷足先登,那可就得花一大筆錢才能消災了。
變數名稱要有意義,這是老生常談,但要怎麼個有意義法,那可就傷腦筋了。現在養成的習慣做法,就是如果有參考資料,例如參考某篇論文或文件寫的,那就用參考資料內的慣用字眼。當然啦,在註解的部分,一定要把參考資料的來源交代清楚,也要完整說明變數的意義,這樣以後就可以按圖索驥,很容易就知道程式寫的是什麼了。
這次在寫Game of Life時偷懶,隨便在網路上搜尋到那幾條規則,挑了個中文的,也沒詳細看完,就直接寫起程式來了。結果,在一剛開始取變數名稱時,就糾結了好久。勉強把變數名稱搞定後,寫到那幾條規則時,怎麼覺得怪怪的,似乎邏輯上有些問題,只好乖乖的去讀維基百科,英文版的。看過英文版的維基百科後,才知道走了好些個冤枉路,直接用裡頭使用的單字就好,根本不需要在那邊糾結。
之所以要讀英文版的,是因為根據經驗,中文在描述科學或工程技術的內容時,很容易會語意不清,沒法描述得很精準。英文當然也會碰到類似的問題,但比起中文來,還是比較容易描述得精準一些。例如,「向前看」這句中文,如果是指方位的話,那很清楚,就是看「前面」的意思,但如果是指時間呢?是指「未來」還是「過去」?如何把一件事描述得很精準,不管是用中文還是英文,對作者來說都是考驗,只是因為語言的天性,英文佔了那麼些便宜,但要說到文學上朦朧美的意境,那我就覺得英文比不上中文了。
那一開始取變數名稱的時候,到底在糾結些什麼呢?這個Game of Life是發生在棋盤狀的二維世界中,所以很自然的就會想到可以用處理影像的方式來處理。cell對應的,就是pixel。cell只有活或死兩個狀態,對應到pixel就只有0或1兩個值,所以可以用處理黑白影像的觀點來寫。既然是處理影像,那就要有個二維array來存放影像。這個array的名稱要取什麼呢?直接就叫cell嗎?不是很好,
看不出來是cell生存的地方。那map如何?就當是game的地圖。這主意不錯,只是Spyder顯示map被用掉了。habitat 呢?cell又不是動物,這字眼不合適。environment呢?怪怪的。糾結了老半天,最後決定用world這個字,勉強接受而已啦!
光是決定array的名稱就花了不少時間,在寫註解時,也一樣是一個頭兩個大,糾結了不少時間,就只是要挑個合適的字眼。哪個字眼這麼難決定啊?就「狀態」啊!
先等等!註解就只是註解,又不會被執行,那用中文寫不就得了,幹嘛用英文來虐待自己?是可以用中文啦!不過Python官網裡頭的建議是說,母語不是英文的人在寫註解的時候,除非百分之一萬確定就只有使用你的母語的人會看你的程式,不然就應該用英文寫,畢竟註解對於程式的可讀性來說,是非常重要的,當然要能讓越多人看得懂越好。所以囉!即便要使出洪荒之力,也都要用我那破得不能再破的英文來寫。
回到令人糾結的「狀態」。英文裡頭state和status都是狀態的意思,那該用哪個字啊?這時候就可以感受到英文的精準和中文的朦朧美了。「state status difference」這幾個關鍵字一搜尋,馬上一卡車的連結出現,有中文的、英文的、簡體的、繁體的,任君取用,顯然這問題困擾著不少人哩。其實如果常搜尋類似的相似字詞問題,就可以發現,有些英文字詞間的差異,即便是母語為英文的人都說不清楚,只說在某些情況下會用這個字,某些情況下會用那個字,某些情況下這兩個字可以互換,不影響含意。現在有專門在講「搭配詞Collocations」的書,倒是該多看一看,語言這種東西,有時候是沒啥道理可言的,像極了愛情啊!
讀了好些說明之後,總算稍微理出個頭緒來了。status指的是在一個過程或程序中,某個時間點的狀態;state指的就只是某個時間點的狀態,無關過程或特定的程序。例如網購的時候,我們可以查現在貨品的status,因為這是一個貨品從出貨到送達我們手中的過程。至於state,我們常說水有液態、氣態、固態三種不同的狀態,這時用的就是state這個字。
好啦!搞清楚了state和status這兩個字的差別了,那描述cell的狀態該用哪個字呢?cell就只有活或死兩個狀態,而且同一個位置上的cell,在不同時間點,並不一定是同一個,有可能是原本的cell死掉之後,另一個活的cell佔據了同樣的位置。換句話說,同一個位置上的cell,並沒有「成、住、壞、空」的生滅過程。既然如此,那就應該用「state」這個字囉!
糾結了好久,總算把變數名稱和註解搞定,開始寫程式。好笑的是,當程式寫了一部份,發現那幾條一開始查到的中文版規則怪怪的,不得不摸摸鼻子,乖乖地去讀維基百科(當然是英文版的:P),而在Rules這節有著這麼一句話:
The universe of the Game of Life is an infinite, two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, live or dead, (or populated and unpopulated, respectively).
好嘛!還能怎麼樣咧?universe!universe!universe!人家用的是universe這個字,只好兩眼翻白,把world全部改成universe。至於state這個字,倒是選對了,只是浪費了不少時間。這就是偷懶的結果,偷雞不著,蝕把米啊!不過話又說回來,雖然繞了遠路,浪費了時間,但也不是完全沒收穫,至少有運動到,增進了身體健康……喔!不是啦!是至少把state和status這兩個字的差別給搞清楚了。
等一下~~~這事還沒了!為什麼「生」和「死」兩個狀態,維基百科那段話中,用的是「live」和「dead」? dead這字沒問題,可live這字就怪了,活著的英文不是alive這個字嗎?根據查到的資料,live當形容詞時,有好幾個意思,其中一個意思和alive一樣,但是live是attributive adjective;而alive是predicate adjective。也就是說,live會放在要形容的名詞前,alive則放在要形容的名詞之後。原來如此啊!
咬文嚼字將告一段落時,電腦喇叭裡正流瀉出Dana Winner唱的The Sound of Silence...
Youtube真是個好東西!沒有它,大概這輩子不可能會知道有Dana Winner這麼棒的歌手。同一首歌,還可以聽到許多不同的版本。
People talking without speaking.
People hearing without listening.
語言文字會隨著時間的流逝轉化含意,因而能承載描繪更多人們的喜、怒、哀、樂,但這卻也苦了學習的人。程式語言是人造的,雖然有一定的規則可遵循,不會有奇怪的例外或隱喻,學習起來比自然語言要輕鬆多了。但是啊但是,它還是跟自然語言一樣,會有新的元素或觀念加入,也會淘汰某些不再適用的元素或觀念。不管是程式語言還是自然語言,都是語言,想要運用自如並能體會其中的美,練習與閱讀是必須的。
程式語言、閱讀、美,這三個能有什麼關連?寫多了、讀多了就知道!
為什麼會看到廣告
15會員
129內容數
寫點東西自娛娛人
留言0
查看全部
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
第一個要拿來練功的題目是:Game of Life。
呼!寫文章真是比寫程式還要燒腦、燒時間。一開始是沒想到要寫這「隨筆」的,是有天程式寫著寫著,腦海中就冒出這麼個想法來,要把跟Python交往的過程寫下來。
在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
讀完文件,接下來就是要動手了。第一步要先安裝Python。爬了些文,最後決定安裝Anaconda。
學程式最怕的,就是抱著書猛啃,把書背得滾瓜爛熟,真正要寫的時候,反而一行都寫不出來。
最近決定好好的把Python給學一學。之所以有這個想法,倒也不是臨時起意或是趕流行,而是決定把想了好久想寫,但卻遲遲未動手的東東給寫一寫。
第一個要拿來練功的題目是:Game of Life。
呼!寫文章真是比寫程式還要燒腦、燒時間。一開始是沒想到要寫這「隨筆」的,是有天程式寫著寫著,腦海中就冒出這麼個想法來,要把跟Python交往的過程寫下來。
在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
讀完文件,接下來就是要動手了。第一步要先安裝Python。爬了些文,最後決定安裝Anaconda。
學程式最怕的,就是抱著書猛啃,把書背得滾瓜爛熟,真正要寫的時候,反而一行都寫不出來。
最近決定好好的把Python給學一學。之所以有這個想法,倒也不是臨時起意或是趕流行,而是決定把想了好久想寫,但卻遲遲未動手的東東給寫一寫。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
这篇文章讲述了“健身”和“训练”的区别以及它们对我们的行为和选择的影响。作者詢問不同的人在被邀请去“健身”或“训练”时会想到去哪里,以及他们会做哪些准备。作者认为,提及“健身”一詞可能会导致比“训练”更昂贵和耗时的选择。文章鼓励读者深度思考自己想要的是哪种方式。
Thumbnail
來聊聊在經過約30天的時間裡,我的「詩小說系列」,究竟是怎樣誕生,又是如何順利鑄造成NFT作品,在 akaSwap 上開始發行出售的。
Thumbnail
漸變灰色的移動迷宮 通往心的道路 隨著時間推移 由中心往外 築成一道一道牆
Thumbnail
線上的寫作平台超多款,但說到文字變現的共通點,就是這麼巧;都會有「業配」這個選項! 但鮮少有人會把如何接業配的資源告訴你,大概是怕多個人來分糧?這是接案圈的禁忌嗎?因此不懂操作的人永遠只能當新手,而懂操作的部落客永遠是他們在接案。這就是真理吧〜 尋找合作廠商不難,只需要一些厚臉皮就好。
Thumbnail
文字變現雖然辛苦,但承熙認為它可以變成人生的第二個舞台。有 3 個步驟可以參考: 1️⃣ 快樂才能持久,以你的專長或最感興趣的事開始寫 2️⃣ 你必須不斷學習,過程中要有工具書當武器 3️⃣ 善用自媒體新媒體,只在單一平台寫作也能順利行銷 ......
Thumbnail
隨著時代進展,每個城市鄉鎮都在急速變遷,這樣的感覺或許對於異鄉的遊子更加深刻。當新的進步來臨,有的舊事物也將永遠消失,也正是這樣的感觸,讓原名張彥之的西西,決定寫下長篇小說《我城》,將眼前處於1970年代劇烈變遷的香港,以文字記錄下來。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
这篇文章讲述了“健身”和“训练”的区别以及它们对我们的行为和选择的影响。作者詢問不同的人在被邀请去“健身”或“训练”时会想到去哪里,以及他们会做哪些准备。作者认为,提及“健身”一詞可能会导致比“训练”更昂贵和耗时的选择。文章鼓励读者深度思考自己想要的是哪种方式。
Thumbnail
來聊聊在經過約30天的時間裡,我的「詩小說系列」,究竟是怎樣誕生,又是如何順利鑄造成NFT作品,在 akaSwap 上開始發行出售的。
Thumbnail
漸變灰色的移動迷宮 通往心的道路 隨著時間推移 由中心往外 築成一道一道牆
Thumbnail
線上的寫作平台超多款,但說到文字變現的共通點,就是這麼巧;都會有「業配」這個選項! 但鮮少有人會把如何接業配的資源告訴你,大概是怕多個人來分糧?這是接案圈的禁忌嗎?因此不懂操作的人永遠只能當新手,而懂操作的部落客永遠是他們在接案。這就是真理吧〜 尋找合作廠商不難,只需要一些厚臉皮就好。
Thumbnail
文字變現雖然辛苦,但承熙認為它可以變成人生的第二個舞台。有 3 個步驟可以參考: 1️⃣ 快樂才能持久,以你的專長或最感興趣的事開始寫 2️⃣ 你必須不斷學習,過程中要有工具書當武器 3️⃣ 善用自媒體新媒體,只在單一平台寫作也能順利行銷 ......
Thumbnail
隨著時代進展,每個城市鄉鎮都在急速變遷,這樣的感覺或許對於異鄉的遊子更加深刻。當新的進步來臨,有的舊事物也將永遠消失,也正是這樣的感觸,讓原名張彥之的西西,決定寫下長篇小說《我城》,將眼前處於1970年代劇烈變遷的香港,以文字記錄下來。