生活随笔
收集整理的這篇文章主要介紹了
项目管理规范
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
從鼬加入的那一周開始,四代就開始著手準(zhǔn)備起草代碼規(guī)范了。 ? 代碼規(guī)范不可少
? 很多人理直氣壯的認(rèn)為,創(chuàng)業(yè)團(tuán)隊(duì),或者說人數(shù)少的團(tuán)隊(duì)根本不需要代碼規(guī)范。 ? 他們的口頭禪經(jīng)常是:“沒辦法啊!我們需要快速的完成客戶的需求啊!客戶最重要啊!實(shí)行代碼規(guī)范只會拖慢項(xiàng)目的進(jìn)度!而且時間太緊,我們也不能搞那么多的學(xué)習(xí)啊!”。 ? ? 對于四代來講,不采用規(guī)范的做法其實(shí)無異于是“飲鴆止渴”,暫時的無限制的代碼提交確實(shí)很爽,在項(xiàng)目初期確實(shí)可能有助于快速完成需求的功能,但是這種鼠目寸光的做法,如果不盡早改正過來,一旦形成慣性,積重難返,對于只是玩玩的項(xiàng)目來說還沒什么太大的副作用,不過對于想要長期發(fā)展的項(xiàng)目來說,這幾乎就百分百會造成深遠(yuǎn)的影響,甚至嚴(yán)重一點(diǎn)就是滅頂之災(zāi)。 ? 隨意提交的代碼導(dǎo)致的代碼隨意的堆砌,最后很可能是造成代碼修改起來無比的困難,越往后越難以維護(hù),最后只能是在團(tuán)隊(duì)一片哭爹喊娘的叫喊聲中,項(xiàng)目迎來壽終正寢。四代真的不知道這種不負(fù)責(zé)任的結(jié)論還會影響多少人,還會終結(jié)多少項(xiàng)目啊! ? 對于“沒時間,項(xiàng)目緊”這一點(diǎn),四代覺的完全是扯淡,完全是借口,從四代的經(jīng)歷來看,任何的團(tuán)隊(duì)都需要代碼規(guī)范,而且團(tuán)隊(duì)熟練掌握代碼規(guī)范后,寫代碼并不會增加多少時間成本!對四代來說,許多的“清規(guī)戒律”之所以在很多的團(tuán)隊(duì)執(zhí)行不下去,完全是團(tuán)隊(duì)管理者造成的,管理者的懶惰和不作為導(dǎo)致了團(tuán)隊(duì)的低效。 ? 代碼的作用
? 說到代碼規(guī)范,就必須要首先理解代碼的作用。扯淡!誰不懂代碼啊?這還用討論嗎!答案是:用! ? 在四代看來,代碼存在兩個方面的作用,第一個作用是與機(jī)器對話,第二個作用是與團(tuán)隊(duì)對話。第一個是從個人和技術(shù)角度講,第二個是從團(tuán)隊(duì)和溝通上講。 ? ? 對于四代來說,寫代碼存在有兩個層次,也就是說,在四代的眼中,軟件工程師至少存在兩個等級,一個是初級,一個是高級,初級軟件工程師能寫出機(jī)器能懂的代碼,也就是說編譯沒問題,運(yùn)行很正確,但是高級軟件工程師能寫出人能懂的代碼,也就是不僅編譯沒問題,運(yùn)行很正確,關(guān)鍵是團(tuán)隊(duì)其他人還能讀懂,這就是優(yōu)秀的軟件工程師最牛逼的地方,沒有“之一”。 ? 對于一個團(tuán)隊(duì)來說,有什么會比代碼的傳承性更重要嗎?沒有!即使是只有一個人的團(tuán)隊(duì)也是如此,誰能牛逼到面對自己一段雜亂不堪的代碼,在幾個月以后還了如指掌!時至今日,代碼在溝通上的容易與否,也就是代碼的溝通成本,或者說維護(hù)成本,是衡量代碼好壞的最重要的特征了,這里同樣沒有“之一”。 ? 為了讓代碼便于溝通,為了讓團(tuán)隊(duì)合作更加高效,確實(shí)應(yīng)該制定團(tuán)隊(duì)基本的代碼規(guī)范! ? 代碼規(guī)范那些事
?
? 代碼規(guī)范這個事,毋庸置疑,大家絕對是贊同的,盡管很多人目前不會執(zhí)行,反正大家認(rèn)為這個玩意兒應(yīng)該有。但是這個東東嚴(yán)格來說是沒有標(biāo)準(zhǔn)的,不同的人有不同的看法。四代認(rèn)為:對于一個團(tuán)隊(duì)來說,不管采用何種規(guī)范,只要做好三件事就可以了:第一件事是盡快執(zhí)行下去,第二件事是堅(jiān)決執(zhí)行下去,第三件事是堅(jiān)持執(zhí)行下去。 ? ? ? 首先得具有這個堅(jiān)決的態(tài)度,這是做這件事的前提條件,否則說什么都是白扯,四代見過太多在團(tuán)隊(duì)中扯淡的人和事了!說的很好聽,可實(shí)際上一旦談到落實(shí),就閉口不言! ? 其次,四代覺得對于代碼規(guī)范本身,有幾點(diǎn)還是需要注意的。 ? 第一點(diǎn),代碼規(guī)范最好是明確的規(guī)范。 ? 比如下面這些就是比較模糊的規(guī)范: ? | 1. 變量應(yīng)該不要太長。 2. 變量名應(yīng)該清晰易懂。 3. 函數(shù)體不要太啰嗦。 4. 類不要太大。 |
? 如果把這些規(guī)范改成下面這樣,或許更能容易執(zhí)行一點(diǎn): ? | 1. 變量不超過5個單詞。 2. 變量名要表達(dá)出變量的用途。 3. 函數(shù)體不要超過50行,函數(shù)復(fù)雜度不要超過10。 4. 類的公開成員不要超過20。 |
? 第二點(diǎn),規(guī)范應(yīng)該具有實(shí)用性。 ? 至于實(shí)用性上,四代認(rèn)同代碼規(guī)范不易太長,可以采用很多人建議的那樣,就搞個”程序員節(jié)操15條“,選取你認(rèn)為團(tuán)隊(duì)中最需要實(shí)行的15條放到里面就可以了。比如四代就會選擇如下一些簡單易行的一些規(guī)則: ? | 元素類型 | 命名規(guī)范 | 實(shí)現(xiàn)規(guī)范 |
| 通用命名 | 使用英文單詞 表達(dá)出變量用途 不加變量類型 不使用縮寫 本地變量采用小駝峰命名 函數(shù)和類型采用大駝峰命名 | ? |
| 表達(dá)式 | ? | 語句體即使只有一句也不省略{} if語句中的條件表達(dá)式的邏輯運(yùn)算不要超過3個 |
| 函數(shù) | 以“動詞”或者“動詞+名詞”組合 | 參數(shù)不多于5個 函數(shù)體不超過30行 (不含空行) 函數(shù)復(fù)雜度不超過7 |
| 類 | 類和屬性以“名詞”或者“形容詞+名詞”的方式命名 類實(shí)例變量以“m_”開頭,靜態(tài)變量以“s_”開頭,后面部分使用小駝峰命名 交互型控件變量結(jié)尾需加控件類型全稱 類常量/只讀變量不加前綴且使用大駝峰命名 | 類的成員函數(shù)(包括普通函數(shù),索引,屬性)全部參照函數(shù)的規(guī)范 類不允許有非常量的公開字段,如果確實(shí)需要則用屬性代替 類公開成員不超過15個 類不超過800行 (所有行) |
| 接口 | 以“I”開頭,以“形容詞”或“名詞”命名 | 接口的成員不超過5個 |
? ? 就這些,不管是重構(gòu)還是正常寫代碼都用得上,姑且也把這些規(guī)則稱為”程序員的節(jié)操“吧,呵呵,這可是程序員的底線啊。 ? 第三點(diǎn),規(guī)范應(yīng)該具有時效性。 ? 隨著時間的不斷推進(jìn),隨著團(tuán)隊(duì)成員水平的不斷提高,大家可以不斷的修訂這個規(guī)范的內(nèi)容,比如每年一次,與時俱進(jìn)嘛! ? 四代初步的規(guī)劃是每年年初修訂一次,不求完美,但求符合團(tuán)隊(duì)的實(shí)際情況。這個不需要多說了,一潭死水最容易臭掉,一切缺少發(fā)展特征的事物最終都會死掉,被淘汰,這是偉大的自然辯證法告訴我們的!在大學(xué)幾年中,自然辯證法和哲學(xué)是四代認(rèn)為最重要的課了,也同樣沒有“之一”! ? 第四點(diǎn),規(guī)范應(yīng)該是大家一致認(rèn)同的。 ? 規(guī)范是整個團(tuán)隊(duì)代碼提交的準(zhǔn)則,所以只有大家一致從心里認(rèn)同了,大家才會始終貫徹它們。 ? 四代非常重視這一點(diǎn),當(dāng)后來規(guī)范建立起來以后,四代先是讓團(tuán)隊(duì)中的所有人試著執(zhí)行了幾個月,然后才正式的和所有的成員討論了規(guī)范中的所有細(xì)節(jié),解答大家的疑惑,征求大家的意見,最終形成了當(dāng)年執(zhí)行的版本。 ? 代碼審查那些事
? 有了代碼規(guī)范了,大部分人可能會認(rèn)為,這下代碼審查的時候終于可以有話說了。不過四代個人覺得代碼規(guī)范更多的是大家自檢的項(xiàng)目,除了團(tuán)隊(duì)新人需要提醒一下外,基本上不需要別人太操心。 ? ? 代碼審查,這個大家同樣都是點(diǎn)贊的,姑且不管效果有多明顯,反正大家都覺得這個玩意兒有用,大概原因有如下一些: ? | 1. 代碼審查能避免一些低級的錯誤,比如拼寫錯誤,比如簡單的邏輯錯誤等。 2. 代碼審查能使得大家互相學(xué)習(xí)一些新的知識。 3. 代碼審查能多熟悉一些代碼。 4. 代碼審查能避免一些對方代碼的失誤而影響到自己的功能。 5. 代碼審查能尋找到更加優(yōu)化的方案。 |
? ? 但是一到實(shí)際的項(xiàng)目中,就會有各種問題導(dǎo)致不能貫徹執(zhí)行下去,比如下面這些理由: ? | 1.?時間不夠 “哥啊,軟件開發(fā)任務(wù)多的做不過來,那還有時間做代碼審查?這不是代碼審查好不好的問題,而是我沒時間做啊!” 2.?需求變化 “需求變得太快,代碼的生存周期比較短,不需要好的代碼,反正過兩天這些代碼就可能會被廢棄了!” 3.?態(tài)度問題 “別人的代碼,我又不懂,怎么審查啊!而且就算是自己寫的,寫好就行啦,干嘛精益求精啊!” 4.?結(jié)果最重要 “大佬們都說了,能運(yùn)行的代碼最重要了,要那么漂亮干什么!” 5.?能力不足 “不好意思啊,我們都不知道怎么做代碼審查啊!” |
? 乖乖,總結(jié)一下都能寫一篇論文。但是不管怎么樣,四代根據(jù)團(tuán)隊(duì)實(shí)施代碼審查的過程,覺得有幾點(diǎn)是值得大家深入思考的: ? 第一點(diǎn),任何提交到代碼庫的代碼必須是經(jīng)過代碼審查的。 ? 這個不用多說了吧,既然代碼審查那么的重要,無論時間多么的緊迫,謹(jǐn)慎一點(diǎn)都是必要的,尤其是對一些發(fā)布流程比較長,發(fā)布成本比較高的產(chǎn)品,如PC團(tuán)隊(duì)研發(fā)的桌面版軟件。 ? 第二點(diǎn),代碼審查不僅僅檢查那些代碼規(guī)范,還要檢查代碼的邏輯是否合理。 ? 雖然很多時候,代碼審查并不能如想象的那樣,發(fā)現(xiàn)代碼的很多問題,但是代碼審查會提升程序員的編程態(tài)度。試想如果一個人知道將會有同事檢查他的代碼,他編程態(tài)度就絕對會不一樣的。他寫出的代碼將更加整潔,有更好的注釋,更好的程序結(jié)構(gòu),因?yàn)樗?#xff0c;大家將會查看他的程序。 ? 在代碼審查中最常犯的錯誤幾乎每個新手都會犯的錯誤是,審查者根據(jù)自己的編程習(xí)慣來評判別人的代碼(當(dāng)然,基本的代碼規(guī)范是需要大家共同遵守的,哈哈)。 ? 對于一個問題,通常大家能找出十幾種方法去解決。對于一種解決方案,大家能有百萬種編碼方案來實(shí)現(xiàn)它。做代碼審查的時候,審查者的任務(wù)不是來確保被審查的代碼都采用的是自己習(xí)慣的編碼方式,因?yàn)榇蟛糠智闆r下,它不可能跟你自己寫的一樣。作為一段代碼的審查者的任務(wù)是確保由作者自己寫出的代碼是正確的。 ? 第三點(diǎn),代碼審查不一定非要說些什么。 ? 代碼審查經(jīng)常易犯的毛病是,人們覺得有壓力,感覺非要說點(diǎn)什么才好。當(dāng)審查者知道作者用了大量的時間和精力來實(shí)現(xiàn)這些程序,不該說點(diǎn)什么嗎?不,大部分時候并不需要。大部分時候,只說一句:“哇,不錯呀”,會非常合適。 ? 第四點(diǎn),代碼審查要堅(jiān)持執(zhí)行,一定不要敷衍。 ? 沒有什么事情能簡單的做下來的。依四代的經(jīng)驗(yàn),在團(tuán)隊(duì)能正確的進(jìn)行代碼審查前,大家是需要花時間學(xué)習(xí)和實(shí)踐的。人們在代碼審查時經(jīng)常會犯一些錯誤,導(dǎo)致不少麻煩,尤其在一些缺乏經(jīng)驗(yàn)的審查者中經(jīng)常的出現(xiàn)。他們給了人們一個很遭的代碼審查的體驗(yàn),成為了人們接受代碼審查制度的一個障礙。 ? 代碼規(guī)范和代碼審查是PC團(tuán)隊(duì)最重要的幾件事之一,從規(guī)范討論的那天起,四代就征求了鼬關(guān)于這件事的意見,他們經(jīng)歷過入職后修改部分代碼的痛苦的經(jīng)歷后,一致認(rèn)為這么做非常有必要,于是,就在某個月黑風(fēng)高的夜晚,它終于被正式實(shí)施了。 原文地址:http://www.cnblogs.com/dxy1982/p/8427805.html?utm_source=gold_browser_extension
轉(zhuǎn)載于:https://www.cnblogs.com/wzlbigdata/p/8428378.html
總結(jié)
以上是生活随笔為你收集整理的项目管理规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。