<strong id="5lvfi"><dl id="5lvfi"></dl></strong>

      • <tfoot id="5lvfi"><menuitem id="5lvfi"></menuitem></tfoot>
        <th id="5lvfi"><progress id="5lvfi"></progress></th>
          <strong id="5lvfi"><form id="5lvfi"></form></strong>
          <strong id="5lvfi"><form id="5lvfi"></form></strong>
        1. <del id="5lvfi"></del>

          首頁(yè)>商情資訊>精選文摘

          一個(gè)程序員的自我修養(yǎng)是什么?

          2019-6-11 10:26:00
          • 作為一個(gè)有操守,并秉承基本自我修養(yǎng)的程序員,我們絕不能為了各種誘惑或者脅迫,甚至是自己的惰性、個(gè)性,而放棄寫(xiě)出簡(jiǎn)潔清晰,可讀的代碼。

          在《喜劇之王》中,周星馳扮演的尹天仇,一直夢(mèng)想成為一名演員,而他不管是在扮演跑龍?zhí)?,或者在街坊中開(kāi)設(shè)演員訓(xùn)練班,亦或成為主角時(shí),他對(duì)待演員的態(tài)度,始終是認(rèn)真,熱愛(ài)而又投入的。而那一本他隨身攜帶的書(shū)--《演員的自我修養(yǎng)》,盡管不知道里面具體寫(xiě)的是什么,但我猜,他對(duì)待演員的態(tài)度和行為,就是書(shū)中內(nèi)容顯示的。

          一名程序員的自我修養(yǎng)是什么

          于是,不禁問(wèn)了問(wèn)自己,作為一名程序員,一個(gè)“程序員的自我修養(yǎng)”是什么?

          盡管我們不一定要像尹天仇那么的認(rèn)真對(duì)待自己的事業(yè),但,一些基本的修養(yǎng),作為一名新時(shí)代的碼農(nóng),總應(yīng)該是要具備的吧。不過(guò)真要說(shuō)修養(yǎng),方面還是挺多的,技術(shù)自我提示自不必說(shuō)。但我并不打算從這個(gè)大家都覺(jué)得理所當(dāng)然的技術(shù)方面入手,而是談?wù)?,可讀性代碼,這個(gè)容易被大家忽視的基本素養(yǎng)。

          1、遵從所在團(tuán)隊(duì)的代碼規(guī)范。

          一個(gè)高效、成熟的團(tuán)隊(duì),必定有一個(gè)屬于自己的代碼規(guī)范,這個(gè)規(guī)范是團(tuán)隊(duì)的寶貴的財(cái)富,它是整個(gè)團(tuán)隊(duì)從各種坑中爬起來(lái)后積累的經(jīng)驗(yàn)教訓(xùn)。什么是規(guī)范,它是人們從無(wú)數(shù)經(jīng)驗(yàn)中總結(jié)出來(lái)的規(guī)則,標(biāo)準(zhǔn)。而代碼規(guī)范,指導(dǎo)團(tuán)隊(duì)成員如何以最短的時(shí)間寫(xiě)成最高效,可讀性強(qiáng)的代碼。試想,如果成員不遵從規(guī)范,你用駝峰命名,他用下劃線,這對(duì)程序的可讀,將造成多大的影響。我想,應(yīng)該沒(méi)有一個(gè)人愿意去閱讀一段,各種變量命名形式都能見(jiàn)得到,private, public 方法隨意排序,甚至常量類(lèi)都散落在各個(gè)角落的代碼吧。

          代碼,一個(gè)作用是讓機(jī)器閱讀,另一個(gè)重要的作用是讓人閱讀?。?!

          2、遵從行業(yè)內(nèi)通用的規(guī)范

          在團(tuán)隊(duì)的代碼規(guī)范未涉及到的,那請(qǐng)按照行業(yè)內(nèi)的規(guī)范來(lái)編寫(xiě)代碼。規(guī)范的一個(gè)好處是,可以明顯減少學(xué)習(xí)和交流成本。在java中,當(dāng)我們看到全大寫(xiě)的變量名時(shí),我們就知道這是常量,而不需要去看注釋?zhuān)恍枰タ创a邏輯。為什么這么迅速,因?yàn)樾袠I(yè)里大家都習(xí)慣把常量用大寫(xiě)命名。但假如你用其他命名方式命名常量,比如team_nums命名常量,不僅不能讓人迅速知道這是個(gè)常量,而且可能讓人誤會(huì)這是個(gè)變量,增加了團(tuán)隊(duì)成員學(xué)習(xí)和溝通成本,甚至可能誤導(dǎo)他們。就見(jiàn)過(guò)一位仁兄,明明用的是工廠模式,偏偏按模版模式的命名方式來(lái)命名,問(wèn)他,他說(shuō)他知道這是工廠模式,但他覺(jué)得,更應(yīng)該叫模版模式。。。我的天,,你這么任性,以后還能做朋友么?

          舉個(gè)例子,我們需要根據(jù)支付類(lèi)型,來(lái)生產(chǎn)多個(gè)支付產(chǎn)品,于是,我們寫(xiě)了個(gè)工廠類(lèi),命名為FactoryPay。當(dāng)其他人看到一個(gè)類(lèi)叫FactoryPay,他們會(huì)猜測(cè),這應(yīng)該是個(gè)工廠類(lèi),負(fù)責(zé)生產(chǎn)各種支付產(chǎn)品的工廠,然后按照這個(gè)猜測(cè)去閱讀代碼,就能比較快速的理解整個(gè)類(lèi)的作用。但是,假如我取名PowerPay,別人還不知道是啥,看了半天,才明白,這是個(gè)工廠的作用。這就明顯增加了他人的學(xué)習(xí)成本和維護(hù)代碼的成本。

          不管你是新手還是老鳥(niǎo),務(wù)必了解施行行業(yè)規(guī)范,切勿為了標(biāo)新立異而違反規(guī)范。這么低端的裝逼,就沒(méi)必要采用了,要裝也寫(xiě)個(gè)高端的框架來(lái)提升逼格唄。

          3、變量、方法命名要能表達(dá)變量作用

          在程序員這個(gè)圈子很久了,就發(fā)現(xiàn),程序員這貨,都喜歡這套,“這個(gè)接口干嘛用的,有文檔么”,“自己看代碼去”。很多時(shí)候都是一臉黑。

          盡管程序員閱讀別人代碼技術(shù)都是一流,不管你是有沒(méi)有注釋?zhuān)还苣闶窃趺囱h(huán)嵌套,也不管你是怎么命名,他們都能耐心的,把代碼分析個(gè)所以然來(lái)。但,對(duì)于程序員這個(gè)視時(shí)間寶貴如生命,分分鐘都能創(chuàng)造幾百萬(wàn)價(jià)值的群體來(lái)說(shuō),您行行好,給我們省點(diǎn)時(shí)間吧,把變量是干啥用的,說(shuō)清楚唄,沒(méi)準(zhǔn)節(jié)省的這幾分鐘,多賺個(gè)幾萬(wàn),還能請(qǐng)大家出去嗨呢。

          每每看到部門(mén)的某大神,用一個(gè)神一般的變量名“flag”,我就有吐血的沖動(dòng),他還這個(gè)flag一直雪藏,不用,只是傳遞到第n個(gè)方法才使用,頓時(shí)心力交瘁,我的天,這個(gè)flag都是是干嘛用的啊,后來(lái)才明白,是isPay的意思,用來(lái)標(biāo)識(shí)用戶是否支付成功了。當(dāng)時(shí)一口老血吐屏幕上,心里狂吐槽,老兄,你命名個(gè)isPay會(huì)死么,我的腦細(xì)胞這么不值錢(qián)么。到后來(lái)看到,去魔法數(shù)字,用int NUM_7 = 7,而不是MAX_MEMBERS來(lái)表示最大成員、用x y z來(lái)命名變量名,各種只有作者,或者作者后來(lái)都忘了的獨(dú)特命名方式,都見(jiàn)怪不怪了。更有甚者,一個(gè)變量命名為passed,作用居然是“未通過(guò)”的意思,當(dāng)時(shí)就石化了,作者還真是用心良苦,這都要考我細(xì)心不細(xì)心。

          一個(gè)好的變量名,能幫助閱讀者了解變量的作用,也輔助了對(duì)整段代碼的理解。

          4、不要show英語(yǔ),鄉(xiāng)下的孩子傷不起唉

          LZ所在的團(tuán)隊(duì),英語(yǔ)一直都是團(tuán)隊(duì)的硬傷,但總是能看到,某位仁兄,加上大把大把的英文注釋?zhuān)行┳兞棵踩⌒└叽笊系膹?fù)雜的英語(yǔ)單詞。敢問(wèn),你這么高的逼格,以后我們?cè)趺春湍阃姘?。(那位仁兄其?shí)就是LZ,年輕時(shí)唉,罪過(guò)罪過(guò))

          代碼是用來(lái)溝通的,傳遞作者意圖的,都看不懂,怎么溝通交流。建議英語(yǔ)好的童鞋,英語(yǔ)能力可以放到閱讀英文書(shū)籍中展示,在代碼中,如果團(tuán)隊(duì)英語(yǔ)能力很弱,避免使用英文,變量命名也盡量按照?qǐng)F(tuán)隊(duì)英語(yǔ)水平來(lái)命名

          5、添加必要的注釋

          正如上面LZ說(shuō)的,經(jīng)常遭遇“你仔細(xì)看看代碼,就知道干嘛用的”這樣的神回復(fù)。盡管閱讀代碼是每個(gè)程序員的強(qiáng)項(xiàng),但必要的注釋?zhuān)热邕壿嫳容^復(fù)雜的地方,添加必要的注釋?zhuān)瑢?duì)提升團(tuán)隊(duì)成員閱讀熟悉代碼的效率是有很大幫助的。試想,一個(gè)類(lèi),幾百行,沒(méi)有一行注釋?zhuān)瑢?duì)于閱讀者來(lái)說(shuō),閱讀它將是一個(gè)多么恐怖的事。

          6、注釋保持簡(jiǎn)潔,避免沒(méi)有必要的注釋

          即看過(guò)一行注釋都沒(méi)有的代碼,也看過(guò)注釋比代碼還要多的程序。一個(gè)是讓人生不如死,一個(gè)是讓人痛不欲生。(唉,有時(shí)不僅感嘆,在程序員界混,真的是難)。

          LZ就經(jīng)??催^(guò),一大段注釋?zhuān)瑔铝税胩?,要不就是沒(méi)表達(dá)清楚重點(diǎn),要不就是只為說(shuō)明它是個(gè)循環(huán)的作用?。?!譬如i++這樣的代碼,有必要加個(gè)“每個(gè)計(jì)數(shù)增加1”這樣的注釋么,這完全是把讀者定位為非程序員啊,或者就是嚴(yán)重鄙視讀者的編程水平。

          注釋是幫助閱讀的人更好的理解程序的邏輯,只是輔助,如果不重視通過(guò)命名等方式來(lái)傳遞代碼的作用,而是依賴(lài)于注釋?zhuān)@就是本末倒置了。而且,冗長(zhǎng)啰嗦的注釋?zhuān)@到底是幫助人理解,還是阻礙人理解啊,是讀程序還是讀小說(shuō)啊。

          7、擁有自己的編碼規(guī)范

          規(guī)范是為了讓團(tuán)隊(duì)更快的理解、熟悉代碼的,同理,擁有自己的一套規(guī)范,就能幫助其他人更快的理解我們所寫(xiě)的功能,減少學(xué)習(xí)和溝通成本。

          8、代碼清晰簡(jiǎn)潔的表達(dá)出作者的意思

          在我們每次寫(xiě)完一段代碼時(shí),一定要問(wèn)問(wèn)自己,代碼是否表達(dá)清楚了我的意思,是否需要添加些注釋?zhuān)秩〉檬欠袂‘?dāng)了,別人在閱讀時(shí)是否吃力。。每每看到別人一團(tuán)糟的費(fèi)解的代碼,就時(shí)刻提醒自己,一定要把代碼寫(xiě)好咯,我也確實(shí)是這么做的,一遍又一編的檢查,看變量名、方法名是否表明了它的用途,是否有些不必要的、只是為了提升逼格的代碼,別人是否能在短時(shí)間內(nèi)看懂。所有的這些,只是為了寫(xiě)出一段更優(yōu)美的代碼。

          9、堅(jiān)持并捍衛(wèi)上面的準(zhǔn)則

          經(jīng)常能聽(tīng)到,有些公司是代碼行數(shù)來(lái)定義績(jī)效的,但作為一個(gè)有操守,并秉承基本自我修養(yǎng)的程序員,我們絕不能為了各種誘惑或者脅迫,甚至是自己的惰性、個(gè)性,而放棄寫(xiě)出簡(jiǎn)潔清晰,可讀的代碼。

            <strong id="5lvfi"><dl id="5lvfi"></dl></strong>

              • <tfoot id="5lvfi"><menuitem id="5lvfi"></menuitem></tfoot>
                <th id="5lvfi"><progress id="5lvfi"></progress></th>
                  <strong id="5lvfi"><form id="5lvfi"></form></strong>
                  <strong id="5lvfi"><form id="5lvfi"></form></strong>
                1. <del id="5lvfi"></del>
                  久久精品内射 | A V视频在线观看 | 欧美在线色图 | 女人BBwww | 中国婬乱a1级毛片多女 |