|
不知不覺(jué)已經(jīng)工作三年了,回顧自己三年的程序員生涯,總結(jié)了一些東西,希望對(duì)想從事程序員工作的xdjm們有些幫助。
如何從編程愛(ài)好者進(jìn)階為職業(yè)程序員:
一、簡(jiǎn)單才是美
好的代碼一定是最簡(jiǎn)單的,這應(yīng)該是每個(gè)職業(yè)程序員心中萬(wàn)世不變的箴言。一個(gè)簡(jiǎn)單的“hello world”,可以有十幾種實(shí)現(xiàn),但是職業(yè)程序員絕對(duì)不會(huì)標(biāo)新立異,他們會(huì)選擇最簡(jiǎn)單最常用的那種。
為什么要寫(xiě)簡(jiǎn)單的程序?一、簡(jiǎn)單的程序易于擴(kuò)展;二、簡(jiǎn)單的程序易于維護(hù);三、簡(jiǎn)單的程序易于發(fā)現(xiàn)問(wèn)題…… 寫(xiě)簡(jiǎn)單程序的理由實(shí)在太多了。能用10行實(shí)現(xiàn)的,就不要寫(xiě)100行;能用數(shù)組實(shí)現(xiàn)的,就不要用avl 樹(shù)…..
總之,在能實(shí)現(xiàn)功能的情況下,程序越簡(jiǎn)單越好。
二、嚴(yán)格遵守編程規(guī)范
程序員入職時(shí),都會(huì)得到一本公司的編程規(guī)范。雖然每個(gè)公司的編程規(guī)范不盡相同,但是基本都講的是排版格式、注釋、命名規(guī)范、可測(cè)試性、語(yǔ)法規(guī)范等方面的內(nèi)容。編程規(guī)范是前人總結(jié)出來(lái)的經(jīng)驗(yàn)教訓(xùn),每個(gè)職業(yè)程序員都應(yīng)該嚴(yán)格遵守。在項(xiàng)目層面上來(lái)說(shuō),編程規(guī)范是項(xiàng)目成員應(yīng)該遵守的約定,這樣項(xiàng)目代碼才會(huì)風(fēng)格統(tǒng)一,盡力約束個(gè)人風(fēng)格,避免出現(xiàn)10個(gè)人的項(xiàng)目出現(xiàn)11種風(fēng)格的情況。
嚴(yán)格遵守編程規(guī)范,還可以避免出現(xiàn)一些低級(jí)錯(cuò)誤。如:編程規(guī)范中有一條,條件判斷式使用雙等號(hào)”==”時(shí),應(yīng)該將常量放在雙等號(hào)左側(cè),變量放在右側(cè)。遵守該條規(guī)范可以避免出現(xiàn)所謂的“差一錯(cuò)誤”,即將雙等號(hào)寫(xiě)成等號(hào)。這種情況下,編譯器會(huì)報(bào)錯(cuò)。
職業(yè)程序員寫(xiě)出來(lái)的代碼應(yīng)該是風(fēng)格一致的,這樣的代碼便于維護(hù),便于其他程序員的閱讀,也可以規(guī)避一些低級(jí)錯(cuò)誤,所以,嚴(yán)格遵守編程規(guī)范是程序員職業(yè)化的重要體現(xiàn)。
三、代碼的質(zhì)量屬性
代碼的質(zhì)量屬性主要有三個(gè)方面:功能、可擴(kuò)展性、性能。功能:是對(duì)一段程序最基本的要求。程序首先要正確實(shí)現(xiàn)預(yù)期的功能,才能談其他的質(zhì)量屬性。可擴(kuò)展性:對(duì)于一個(gè)大型地,需要長(zhǎng)期維護(hù)的軟件來(lái)說(shuō),程序會(huì)不停地加入一些新的特性。如果程序的可擴(kuò)展性差,就會(huì)導(dǎo)致系統(tǒng)的頻繁重構(gòu),浪費(fèi)大量的人力物力。可擴(kuò)展性應(yīng)該是在程序的設(shè)計(jì)階段就考慮到。
當(dāng)然,沒(méi)有誰(shuí)能在設(shè)計(jì)之初就考慮到所有的擴(kuò)展性,但是我們必須盡量考慮周全,這就涉及到設(shè)計(jì)的方法和理論了,這里不討論。性能:好的程序應(yīng)該考慮性能。但是,這因應(yīng)用場(chǎng)景而論。比如:一個(gè)簡(jiǎn)單的計(jì)算器程序,我們沒(méi)必要花太多地精力去提高它的性能。但是,對(duì)于一個(gè)大型的平臺(tái)系統(tǒng)(電信軟件、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)等),我們就得花精力去考慮性能問(wèn)題了。
三個(gè)質(zhì)量屬性的優(yōu)先級(jí)應(yīng)該是:功能正確>擴(kuò)展性好>性能高。
通常,某些質(zhì)量屬性之間本身是矛盾的。有時(shí)候,我們顧得了性能,程序的可擴(kuò)展性就會(huì)變差。反之,可擴(kuò)展性好了,但是就會(huì)影響性能。一般情況下,我們會(huì)按照上面的優(yōu)先級(jí)別來(lái)取得質(zhì)量屬性的平衡。
四、經(jīng)常review你的代碼
程序員都是心高氣傲的,他們往往對(duì)自己寫(xiě)的代碼充滿了自信,以至于寫(xiě)好以后再也不愿意去多看一眼。但是,既是是大牛,也不能保證代碼零缺陷。一個(gè)職業(yè)的程序員,應(yīng)該定期review自己的代碼,不斷發(fā)現(xiàn)自己代碼的bug。
五、職業(yè)程序員一定是優(yōu)秀的測(cè)試人員
我在公司幾年以來(lái),親眼看見(jiàn)公司開(kāi)發(fā)和測(cè)試人員之間關(guān)系的幾次變革。剛?cè)牍緯r(shí),發(fā)現(xiàn)問(wèn)題的數(shù)量是考核測(cè)試人員績(jī)效的唯一標(biāo)準(zhǔn),某些部門甚至出現(xiàn)給測(cè)試人員下達(dá)日發(fā)現(xiàn)問(wèn)題數(shù)量的指標(biāo),不達(dá)標(biāo)直接影響年終獎(jiǎng)。測(cè)試人員和開(kāi)發(fā)人員水火不容,經(jīng)常出現(xiàn)為了一個(gè)問(wèn)題是否該提單爭(zhēng)得面紅耳赤。一年以后,情況有所改變,測(cè)試人員不再唯問(wèn)題單是從。到了現(xiàn)在,公司已經(jīng)大力提倡開(kāi)發(fā)測(cè)試融合了。開(kāi)發(fā)和測(cè)試人員聯(lián)合績(jī)效考核,考核的標(biāo)準(zhǔn)是版本的穩(wěn)定性以及遺留缺陷密度。開(kāi)發(fā)和測(cè)試人員辦公區(qū)已經(jīng)完全融合在一起,測(cè)試人員經(jīng)常給開(kāi)發(fā)人員培訓(xùn)測(cè)試方法,開(kāi)發(fā)人員也主動(dòng)投入到測(cè)試發(fā)現(xiàn)問(wèn)題。
我說(shuō)自身的經(jīng)歷,只是想說(shuō)明一個(gè)事實(shí),開(kāi)發(fā)和測(cè)試之間并沒(méi)有不可逾越的差別。
很多開(kāi)發(fā)人員對(duì)測(cè)試不屑,覺(jué)得那是沒(méi)有技術(shù)含量的活。其實(shí)不然,測(cè)試人員是站在客戶的角度考慮問(wèn)題,他們往往能考慮到很多研發(fā)人員考慮不到的場(chǎng)景。測(cè)試有一套非常完善的理論。如果研發(fā)人員能夠了解一些測(cè)試方法和理論,對(duì)于軟件的設(shè)計(jì)會(huì)有很大幫助。
職業(yè)程序員一定是優(yōu)秀的測(cè)試人員。
六、站在設(shè)計(jì)的高度編碼
站在設(shè)計(jì)的高度編碼,這話說(shuō)得有點(diǎn)抽象了,但是這確實(shí)是我多年來(lái)感受最深的一點(diǎn)。軟件開(kāi)發(fā)通常分為三個(gè)階段:設(shè)計(jì)、編碼、測(cè)試。很多人認(rèn)為設(shè)計(jì)是設(shè)計(jì)師架構(gòu)師的事情、測(cè)試是測(cè)試人員的事情,程序員的工作即是編碼。所以,很多致力于成為職業(yè)程序員的同學(xué)都將全部的精力放在了編程語(yǔ)言的學(xué)習(xí)上。編程語(yǔ)言只是一個(gè)工具,學(xué)得好,只能說(shuō)明你學(xué)會(huì)使用了一門工具而已。舉個(gè)不是很恰當(dāng)?shù)睦樱瑢?duì)于一個(gè)畫(huà)家來(lái)說(shuō),光學(xué)會(huì)使用畫(huà)筆是不夠的,還得要有藝術(shù)靈感。學(xué)會(huì)了編碼只能說(shuō)明你會(huì)使用畫(huà)筆了,但是離畫(huà)家還遠(yuǎn)著呢。
有篇很著名的論文叫做《源碼既是設(shè)計(jì)》(http://www.feifanbbs.com/frame.php?frameon=yes&referer=http%3A//www.feifanbbs.com/),我非常認(rèn)同。架構(gòu)師在設(shè)計(jì)階段會(huì)輸出設(shè)計(jì)文檔,但是對(duì)于軟件來(lái)說(shuō)源碼才是最直接的工程文檔,一份好的源碼勝過(guò)千百篇工程文檔----這也是敏捷開(kāi)發(fā)的思想。好的源碼一定是經(jīng)過(guò)設(shè)計(jì)的,架構(gòu)師站在架構(gòu)的角度設(shè)計(jì),但是他很難考慮到代碼級(jí)別的事情,代碼的實(shí)現(xiàn)最終要靠編程人員。大到一個(gè)流程,小至一個(gè)函數(shù),這些是要靠實(shí)際編程人員來(lái)設(shè)計(jì)的。編程人員也應(yīng)該學(xué)會(huì)設(shè)計(jì),懂得一些設(shè)計(jì)模式和理論。
做一個(gè)設(shè)計(jì)者,而不是代碼工人。
以上是我的見(jiàn)解,希望與各位交流。
it知識(shí)庫(kù):如何進(jìn)階為職業(yè)程序員---三年程序員生涯的感悟,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。