共創(chuàng)】Python編程快速入門指南">【云駐共創(chuàng)】Python編程快速入門指南
758
2025-04-01
零.前言
最近做學(xué)校的java項目的時候,對編碼規(guī)范問題進行了深入的思考理解,在當前環(huán)境下,各個語言的最權(quán)威的語法書均沒有給出編碼規(guī)范,那么編程語言語法和風格是否應(yīng)該建立統(tǒng)一的標準呢?
1.大佬如是說
在討論這個問題之前,我查閱了一些大佬們對于編碼規(guī)范的態(tài)度,有一些很有趣,還有一些很激進。
羅馬帝國衰敗的主要原因之一是因為他們?nèi)鄙?,他們沒有辦法知道他們的C程序已經(jīng)成功的執(zhí)行完了。
-- Robert Firth
一個有過BASIC編程經(jīng)歷的人是很難學(xué)會好的編程習慣的。作為一個潛在的程序員,他們已經(jīng)被腦殘并且無法修復(fù)。
-- Edsger Wybe Dijkstra, Dijkstra 算法發(fā)明者
“優(yōu)良設(shè)計創(chuàng)造價值的速度,快于其增加成本的速度。 ”—托馬斯·C.蓋勒(Thomas C.Gale) 每名程序員都是作家。 ”—塞坎·雷勒克(Sercan Leylek)
“寫代碼時,每次都要告訴自己:最后負責維護代碼的,會是一個知道你住在哪的變態(tài)暴力狂。 ”— 約翰 ·伍德(John Woods)
讀代碼比寫代碼困難”---Joel Spolsky (StackOverflow合伙創(chuàng)始人)
重構(gòu)早就成了軟件開發(fā)從業(yè)者本能的一部分,每個IDE都內(nèi)置了重構(gòu)功能,每個程序員都定期重構(gòu)自己的代碼。技能上通常不再是問題,但是相對于當年第1版的讀者,現(xiàn)在的程序員對于重構(gòu)這個思想從何而來以及各種細節(jié)反而更陌生,這時候就更值得重新讀一下這本書了。
——霍炬 , PRESS.one CTO
其中有一句話最打動我,是塞坎 ·雷勒克這位文科畢業(yè)自學(xué)編程的專業(yè)程序員說的: "每一名程序員都是 一個作家。 "其實寫代碼和寫一篇文章沒有什么不同,而優(yōu)秀的編碼規(guī)范就像各種文章的固定格式一樣 (比如記敘文人物,地點環(huán)境;議論文三要素等等),在當前的環(huán)境下,一個項目的代碼不僅需要多人合作,而且還需要后來人維護。就像Joel Spolsky說的:"讀代碼比寫代碼困難"。具有一致的編碼規(guī)范習慣,可以使我們的代碼更加模式化,可讀性更高,能夠大幅度提高公司工作效率。因此我認為:為語言 建立編程語言語法和風格的統(tǒng)一標準是必要的。
2.編碼規(guī)范使可讀性更高
代碼的可讀性增高是最顯著的原因:
記得我在剛剛寫技術(shù)博客的時候,曾經(jīng)在CSDN的熱榜第一看過一篇文章,是初學(xué)C語言的,小伙子一看就很用心,把代碼寫成了一個愛心的形狀。
大概就是將這里的Love換成了int main(){int i=0;printf("%d",i);return 0}等等的一大堆。也許對于初學(xué)者來說這樣會很有趣,畢竟熱度都可以到達熱榜第一了(小男孩我就從來沒上過熱榜第一),但是這樣的代碼可以說是可讀性非常非常差的,基本要被公司開除了。編程所獲得的樂趣絕對不是改變代碼的形狀所獲得的。這是一個很惡劣的例子。
再來舉一個大佬在開發(fā)過程中實際的例子,在前不久他們的公司接到了一個項目,源碼在1.3w行左右,他們團隊簡單地通過公司的質(zhì)量檢測工具得到了一個評估報告:
API注釋: 35%
代碼注釋覆蓋率: 10%
不符合代碼規(guī)范問題: 1w+
存在嚴重的阻斷: 100+
無論是誰,拿到了這樣一份質(zhì)檢報告內(nèi)心都會是崩潰的,這等于這段代碼的源碼根本無法閱讀,基本不可能嘗試理解并維護。大佬的團隊不得不重新思考重寫整個項目的可行性,用了大半個月做可行性分析 (包括原維護部門的交流,原開發(fā)文檔的補全,測試部門的測試用例等等)。最后得到了需要進行重寫 的結(jié)論。接下來是對新環(huán)境的搭建,新測試用例的搬遷.....為此又花費支付了4個月左右的時間,前前后后加起來小半年,而這些時間有必要付出嗎?肯定是沒有必要。
了解了他的這些情況后,我不由得慶幸自己遇到了一個好的高級語言程序設(shè)計的大學(xué)老師,在學(xué)習人生中第一門語言--C語言的數(shù)據(jù)結(jié)構(gòu)的時候,我們老師用C++STL的命名規(guī)范來要求我們書寫函數(shù)名。并給作業(yè)中無意義的變量名(比如a,b,c等)進行一定的扣分。由于實驗項目較小,而且基本都是一個人來完成的,因此當時并不在意。從了解了一些實際開發(fā)中的情況開始,我便開始注意了編程語言的編碼規(guī)范。盡量寫出不僅可以被自己閱讀,也可以被別人快速理解的代碼。
3.降低學(xué)習成本
目前的互聯(lián)網(wǎng)大廠基本都有自己的一套編碼規(guī)范,但是這些體系又各不相同,如果從一家公司換到另一家公司,就需要重新學(xué)習新的編碼體系,甚至可能會發(fā)生混淆造成不必要的后果。如果語言本身就帶有一定的編碼規(guī)則的話,不僅可以提高代碼的可繼承性,還可以降低程序員的學(xué)習成本, 使開發(fā)更加高效。看一份優(yōu)秀的,排版有規(guī)律可循的代碼和看一份雜亂無章的代碼,給人的感覺是不一樣的,就好比我們居住的房間,更加整潔才更適合人居住。各種東西拜訪的整整齊齊才給人一種舒服的感覺。才有繼續(xù)編寫或者維護的欲望。
4.編碼規(guī)范的書籍
這里還有兩本比較出名的講解編碼規(guī)范和重構(gòu)的書,說明早已有人重視到了這個問題。
5.劣勢
萬物都是相對的,規(guī)范編碼也會造成一定的問題,只不過這些問題相對于規(guī)范編碼的優(yōu)勢來說力量較弱,因此我仍然是支持規(guī)范編碼的。
曾經(jīng)思考過這樣一個問題:拋開編碼,如果我們的文字也被要求規(guī)范了呢?書寫方式起筆落筆都有統(tǒng)一 的標準,大家都嚴格地去遵守。一旦這樣雖說我們可以更加方便地閱讀文字,但是就不存在所謂的行書草書的“行草之美”了。之前有幸看過蘇軾的真跡,蘇軾可謂是一位大書法家,他的文字灑脫飄逸,有超 凡之感,但如果必須按照楷書那樣一筆一劃地工工整整地完成呢?再如同李白工工整整規(guī)規(guī)矩矩地用印刷體書寫: “天生我材必有用,千金散盡還復(fù)來”,雖然方便了閱讀,但是意境已經(jīng)消失了。
說的再直白一些,當你在追求如何精修文章,追求書法的時候,其實是淺薄的。你大可以花費時間去鉆研一些編程中更加深刻的問題,或許正是這些問題才導(dǎo)致了大牛們在設(shè)計語言的時候,并沒有專門花費時間去總結(jié)一套編碼規(guī)范吧。當有一天你發(fā)現(xiàn)了一個超高效的算法,但是卻因為定義一個變量的大小寫而被編譯器指責的時候,這會不會消磨了編程的興趣呢?
雖然如此,但是在如今的環(huán)境下,大部分的程序員還是在做著中規(guī)中矩的任務(wù),并不具備創(chuàng)造一個新的算法或者語言的能力,試問李白杜甫能有幾人呢?因此相對于劣勢來說,規(guī)范編碼的優(yōu)勢還是更加明顯的。
6.總結(jié)
總而言之,我還是認為規(guī)范編碼會更加好一些,這只是我作為一個學(xué)生角度的思考。這個世界上沒有任何一件事情是完全正確或者錯誤的,只是在利和弊的相較之下才決定會不會去做這件事情。
本文整理自華為云社區(qū)【內(nèi)容共創(chuàng)】活動第15期。
https:// bbs.huaweicloud.com/blogs/345822
任務(wù)35:編程語言語法和風格是否應(yīng)該建立統(tǒng)一的標準?
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。