九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
高效程序員的45個(gè)習(xí)慣-敏捷開(kāi)發(fā)修煉之道

《高效程序員的45個(gè)習(xí)慣-敏捷開(kāi)發(fā)修煉之道》(上)

2012年5月12日

敏捷精神:一種把以人為本、團(tuán)隊(duì)合作、快速響應(yīng)變化和可工作的軟件作為宗旨的開(kāi)發(fā)方法

一. 態(tài)度決定一切
選定了要走的路,就是選定了字通往的目的地。

  • 1. 做事: 指責(zé)不會(huì)修復(fù)bug, 把矛頭對(duì)準(zhǔn)問(wèn)題解決的方法,而不是人。一個(gè)重大的錯(cuò)誤應(yīng)該被當(dāng)作是一次學(xué)習(xí)而不是指責(zé)他人的機(jī)會(huì)。團(tuán)隊(duì)成員在一起工作,應(yīng)相互幫助,而不是相互指責(zé)。
  • 2. 欲速則不達(dá):不要因?yàn)闀r(shí)間緊迫給自己找接口,而墜入快速簡(jiǎn)單的修復(fù)之中。在沒(méi)有真正解理代碼之前,不要急于進(jìn)行bug修復(fù)。必須要投入時(shí)間和精力來(lái)了解代碼是如何工作的,保證修復(fù)后的代碼是整潔、敞亮的,修復(fù)本身是沒(méi)有副作用的。
  • 3. 對(duì)事不對(duì)人:每個(gè)人都會(huì)有好的想法,也會(huì)有不對(duì)的想法,團(tuán)隊(duì)中的每個(gè)人都需要自由地表達(dá)觀點(diǎn)。讓我們驕傲的應(yīng)該是解決了問(wèn)題,而不是比較出誰(shuí)的主意更好。團(tuán)隊(duì)leader既要做到不帶個(gè)人情緒,又要做到不盲目接受所有觀點(diǎn)。
  • 4.排除萬(wàn)難,奮勇前進(jìn):做正確的事,要誠(chéng)實(shí),要有勇氣說(shuō)出實(shí)情。

二. 學(xué)無(wú)止境
即使你已經(jīng)在正確的軌道上,但如果只是停止不前,也仍然會(huì)被淘汰出局。

  • 5. 跟蹤變化:跟蹤技術(shù)變化,你不需要精通所有技術(shù),但需要清楚知道行業(yè)的動(dòng)向,從而規(guī)劃你的項(xiàng)目和職業(yè)生涯:
    (1)迭代和增量式學(xué)習(xí),每天計(jì)劃用一段時(shí)間來(lái)學(xué)習(xí)新技術(shù),時(shí)間不在長(zhǎng),貴在長(zhǎng)期堅(jiān)持
    (2)了解最新行情,優(yōu)秀技術(shù)、業(yè)內(nèi)咨詢(xún)博客,技術(shù)社區(qū)的郵件列表都是不錯(cuò)的選擇
    (3)參加研討會(huì)議,計(jì)算機(jī)大付在世界各地舉行,有機(jī)會(huì)就參加,這是向?qū)<覍W(xué)習(xí)的很好的機(jī)會(huì)
    (4)如饑似渴的閱讀,技術(shù)和非技術(shù)的好書(shū),或者是一些專(zhuān)業(yè)期刊、雜志,都是不錯(cuò)的選擇
  • 6. 對(duì)團(tuán)隊(duì)投資:搭建團(tuán)隊(duì)學(xué)習(xí)平臺(tái),建立積極的團(tuán)隊(duì)學(xué)習(xí)分享的氛圍,讓每個(gè)團(tuán)隊(duì)成員都覺(jué)得自己越來(lái)越聰明。(午餐會(huì)議)
  • 7. 懂得丟棄:“沉舟側(cè)畔千帆過(guò),病樹(shù)前頭萬(wàn)木春”,要果斷的丟棄舊的、不再合時(shí)宜的技術(shù)、習(xí)慣,積極地學(xué)習(xí)新的。
  • 8. 打破砂鍋問(wèn)到底: 不要滿(mǎn)足于別人告訴你的表面現(xiàn)象,要不停問(wèn)直到你明白問(wèn)題的根源。
  • 9.把握開(kāi)發(fā)的節(jié)奏:保持項(xiàng)目迭代的節(jié)奏,編碼、測(cè)試、代碼review、集成、發(fā)布,盡量保證每個(gè)迭代周期是比較固定有規(guī)律的。如果知道什么時(shí)候開(kāi)始下一個(gè)節(jié)拍,跳舞就會(huì)更加容易。軟件開(kāi)發(fā)亦是同樣的道理。

三. 交付用戶(hù)想要的軟件
沒(méi)有任何計(jì)劃在遇敵后還能繼續(xù)執(zhí)行。

  • 10. 讓客戶(hù)決定:開(kāi)發(fā)者(或項(xiàng)目經(jīng)理)能做的一個(gè)重要決定就是:決定什么不該決定。業(yè)務(wù)方面的決定,讓用戶(hù)來(lái)做。用業(yè)務(wù)負(fù)責(zé)人能夠理解的語(yǔ)言,向他們?cè)敿?xì)解釋遇到的問(wèn)題,并讓他們做決定。
  • 11.讓設(shè)計(jì)指導(dǎo)而不是操縱開(kāi)發(fā):設(shè)計(jì)滿(mǎn)足實(shí)現(xiàn)即可,不必過(guò)于詳細(xì)。
    (1)好的設(shè)計(jì)是張地圖,它也會(huì)進(jìn)化。它指引開(kāi)發(fā)向正確的方向前進(jìn),它不是殖民地,它不應(yīng)該標(biāo)識(shí)具體的路線(xiàn)。開(kāi)發(fā)者不要被設(shè)計(jì)操縱。
    (2)好的設(shè)計(jì)是正確的,但不是精確的。它描述的一切必須是正確的,不應(yīng)該涉及不確定或者可能會(huì)發(fā)生變化的細(xì)節(jié)。它是目標(biāo),不是具體的處方。
  • 12. 合理地使用技術(shù):不要一味的追求酷炫的新技術(shù),根據(jù)需要選擇合適的技術(shù)。
  • 13. 保持可以發(fā)布:保持你的項(xiàng)目時(shí)刻可以發(fā)布。代碼check in之前保證:更新到最新代碼,所有單元測(cè)試通過(guò)。
  • 14. 提早集成,頻繁集成:搭建自動(dòng)化的持續(xù)集成系統(tǒng),提早集成,頻繁集成,持續(xù)而有規(guī)律地進(jìn)行集成。決不要做大爆炸式的集成。
  • 15. 提早實(shí)現(xiàn)自動(dòng)化部署:一開(kāi)始就實(shí)現(xiàn)自動(dòng)化部署。使用部署系統(tǒng)安裝你的應(yīng)用,在不同的機(jī)器上用不同的配置文件測(cè)試依賴(lài)的問(wèn)題。QA人員要像測(cè)試軟件本身功能一樣測(cè)試部署。
  • 16. 使用演示獲得頻繁反饋:開(kāi)發(fā)的時(shí)候,要保持應(yīng)用可見(jiàn)。每隔一周或兩周,的邀請(qǐng)所有的客戶(hù),給他們演示最新完成的功能,積極獲得他們的反饋。
  • 17. 使用短迭代,增量發(fā)布:使用1~4周左右的迭代周期,發(fā)布帶有最小卻可用功能的產(chǎn)品。
  • 18. 固定價(jià)格就意味著背叛承諾:不要提供固定報(bào)價(jià),要基于真實(shí)的工作來(lái)評(píng)估。主團(tuán)隊(duì)和客戶(hù)一起,真正地在當(dāng)前項(xiàng)目中工作,做具體實(shí)際的評(píng)估。
四. 敏捷反饋
  • 一步行動(dòng),勝過(guò)千萬(wàn)專(zhuān)家的意見(jiàn)。

    • 19. 守護(hù)天使:編寫(xiě)能產(chǎn)生反饋的代碼,單元測(cè)試是不錯(cuò)的實(shí)踐。使用自動(dòng)化的單元測(cè)試,好的單元測(cè)試能夠讓你的代碼問(wèn)題提供及時(shí)的警報(bào)。可以使用一些成熟的單元測(cè)試框架,比如gtest for C/C++, PyUnit for python, Junit for Java, etc。
    • 20. 先使用它再實(shí)現(xiàn)它:測(cè)試驅(qū)動(dòng)開(kāi)發(fā),編程之前,先寫(xiě)測(cè)試
    • 21. 不同環(huán)境, 就有不同問(wèn)題:使用持續(xù)集成工具,在每一種支持的平臺(tái)和環(huán)境中運(yùn)行單元測(cè)試。要積極地尋找問(wèn)題,而不是等問(wèn)題來(lái)找你。
    • 22. 自動(dòng)驗(yàn)收測(cè)試:為核心的業(yè)務(wù)邏輯創(chuàng)建測(cè)試,讓你的客戶(hù)單獨(dú)驗(yàn)證這些測(cè)試,要讓他們像一般的測(cè)試一樣可以自動(dòng)運(yùn)行。
    • 23. 度量真實(shí)的進(jìn)度:不要用不恰當(dāng)?shù)亩攘縼?lái)來(lái)欺騙自己或者團(tuán)隊(duì),要評(píng)估那些需要完成的待辦事項(xiàng),可以做成待辦事項(xiàng)列表,完成一項(xiàng)移除一項(xiàng),真實(shí)的度量剩下的工作量。
    • 24. 傾聽(tīng)用戶(hù)的聲音:每一個(gè)抱怨背后都隱藏了一個(gè)事實(shí),找出真相,修復(fù)真正的問(wèn)題。沒(méi)有愚蠢的用戶(hù),只有愚蠢、自大的開(kāi)發(fā)人員。
五. 敏捷編碼

任何一個(gè)笨蛋都能夠讓事情變得越來(lái)越笨重,越來(lái)越復(fù)雜,越來(lái)越極端。需要開(kāi)才的指點(diǎn)以及許多的勇氣,才能讓事情向相反的方向發(fā)展。

  • 25. 代碼清晰的表達(dá)意圖:代碼必須明確的說(shuō)出你的意圖,而且必須富有表達(dá)力。這樣可以讓代碼更易于被別人閱讀和理解。代碼不讓人迷惑,也就減少了發(fā)生潛在錯(cuò)誤的可能。一言以蔽之,代碼應(yīng)該意圖清晰,表達(dá)明確。 要編寫(xiě)清晰的代碼而不是討巧的代碼。
  • 26.用代碼溝通:使用細(xì)心選擇的、有意義的命名,最好能讓代碼能夠自注釋。如果要加注釋?zhuān)仨氁佑幸饬x的注釋?zhuān)⑨屩饕菫榱嗣枋龃a意圖和約束:
    (1)目的:為什么需要這個(gè)方法?
    (2)前置條件:方法需要什么樣的輸入,對(duì)象必須處于何種狀態(tài),才能讓這個(gè)方法工作?
    (3)后置條件:方法成功執(zhí)行后,對(duì)象現(xiàn)在處于什么狀態(tài),有哪些返回值?
    (4)異常:可能會(huì)發(fā)生什么樣的問(wèn)題?會(huì)拋出什么樣的異常?
  • 27. 動(dòng)態(tài)評(píng)估取舍:動(dòng)態(tài)評(píng)估權(quán)衡,考慮性能、便利性、生產(chǎn)力、成本和發(fā)布時(shí)間。如果性能表現(xiàn)足夠了,就將注意力放在其它因素上。不要為了感覺(jué)上的性能提升或者設(shè)計(jì)的優(yōu)雅,而將設(shè)計(jì)復(fù)雜化。
  • 28. 增量式編程:在很短的編碼、構(gòu)建、測(cè)試循環(huán)中編寫(xiě)代碼。保持代碼在比較短的周期內(nèi)(比如寫(xiě)完一個(gè)功能點(diǎn))是可編譯通過(guò)的,單元測(cè)試通過(guò)的,隨著代碼功能的完善,不斷的完善單元測(cè)試。切身感受到的好處是,在寫(xiě)了幾行代碼之后,你會(huì)迫不及待地希望進(jìn)行一次構(gòu)建、測(cè)試循環(huán)。在沒(méi)有得到反饋時(shí),你不想走得太遠(yuǎn)。
  • 29. 保持簡(jiǎn)單:簡(jiǎn)單不是簡(jiǎn)陋,開(kāi)發(fā)可以工作的、最簡(jiǎn)單的解決方案。除非有不可辯駁的原因,否則不要使用模式、原則和高難度技術(shù)之類(lèi)的東西。但是,強(qiáng)行讓代碼變得優(yōu)雅與過(guò)早優(yōu)化類(lèi)似,同樣會(huì)產(chǎn)生惡劣的影響。
  • 30. 編寫(xiě)內(nèi)聚的代碼:讓類(lèi)的功能盡量集中,讓組件盡量小。要避免創(chuàng)建很大的類(lèi)或組件,也不要?jiǎng)?chuàng)建無(wú)所不包的大雜燴類(lèi)。
  • 31. 告知,不要詢(xún)問(wèn):查詢(xún)與命令分開(kāi),查詢(xún)只做查詢(xún),不要做修改代碼的邏輯,絕對(duì)不允許一個(gè)看起來(lái)無(wú)辜的查詢(xún)?nèi)バ薷膶?duì)象的狀態(tài);命令用來(lái)完成某項(xiàng)明確的修改操作。不要搶別的對(duì)象或是組件的工作。告訴它做什么,然后盯著你自己的職責(zé)就好了。
  • 32. 根據(jù)契約進(jìn)行替換:針對(duì)is-a的關(guān)系使用繼承,針對(duì)has-a或use-a的關(guān)系使用聚合(委托)。繼承要遵守“子類(lèi)不應(yīng)該要求更多,不應(yīng)該承諾更小”的原則,相對(duì)于繼承,聚合(委托)更為靈活,適應(yīng)能力也更強(qiáng)。

六. 敏捷調(diào)試
你也許會(huì)對(duì)木匠那毫無(wú)差錯(cuò)的工作印象深戶(hù)。但我向你保證,事實(shí)不是這樣的,真正的高手只是知道如何亡羊補(bǔ)牢。

  • 33. 記錄問(wèn)題解決日志:不要在同一處跌倒兩次。維護(hù)一個(gè)問(wèn)題及其解決方案的日志。保留解決方案是修復(fù)問(wèn)題過(guò)程的一部分,以后發(fā)生相同或類(lèi)似的問(wèn)題時(shí),就可以很快找到并使用了。
  • 34. 警告就是錯(cuò)誤:對(duì)于一個(gè)優(yōu)秀的開(kāi)發(fā)者來(lái)說(shuō),是絕不允許自己的代碼有警告的。把警告視為錯(cuò)誤是一種優(yōu)秀的習(xí)慣。Check-in帶有警告的代碼,就跟check-in有錯(cuò)誤或者沒(méi)有通過(guò)單元測(cè)試的代碼一樣,都是極差的做法。
  • 35.對(duì)問(wèn)題各個(gè)擊破:有解決問(wèn)題時(shí),要將問(wèn)題域與其周邊隔離開(kāi),特別是大型應(yīng)用中。二分法是不錯(cuò)的實(shí)踐,通過(guò)二分法隔離,不斷縮小問(wèn)題的范圍,直到定位問(wèn)題。
  • 36. 報(bào)告所有的異常:對(duì)于異常,如果能正常捕捉處理的,請(qǐng)盡量處理;如果不能捕捉處理的,請(qǐng)向上傳播。發(fā)生異常時(shí),請(qǐng)?zhí)峁┳銐虻奶崾拘畔?,或者是記錄異常相關(guān)的日志,這對(duì)以后的跟蹤工作很有幫助。
  • 37. 提供有用的錯(cuò)誤信息:提示的錯(cuò)誤信息,一定要是對(duì)跟蹤問(wèn)題有幫助的。發(fā)生問(wèn)題時(shí),要展示出盡量多的支持細(xì)節(jié),不過(guò)別讓用戶(hù)陷入其中。

七. 敏捷協(xié)作 
我不僅發(fā)揮了自己的全部能力,還將我所仰仗的人的能力發(fā)揮到極致。

  • 38. 定期安排會(huì)而時(shí)間:使用站立會(huì)議,每天開(kāi)始工作前,團(tuán)隊(duì)成員一起開(kāi)15分鐘左右(最長(zhǎng)不要超過(guò)30分鐘)的站立會(huì)議。一方面幫助團(tuán)隊(duì)成員熟悉相互之間的工作,另一方面,可以更好的把控項(xiàng)目進(jìn)度。
  • 39. 架構(gòu)師必須寫(xiě)代碼:優(yōu)秀的設(shè)計(jì)從積極的程序員那里開(kāi)始演化。積極的編程可以帶來(lái)深入的理解。不要使用不愿意編程的架構(gòu)師—-不知道系統(tǒng)的真實(shí)情況,是無(wú)法開(kāi)展設(shè)計(jì)的。
  • 40. 實(shí)行代碼集體所有制:在團(tuán)隊(duì)中實(shí)行任務(wù)輪換制,讓每個(gè)成員都可以接觸到不同部分的代碼,要以提升團(tuán)隊(duì)整體的知識(shí)和專(zhuān)業(yè)技能。另外,還可以降低團(tuán)隊(duì)成員離開(kāi)所帶來(lái)的風(fēng)險(xiǎn)。
  • 41. 成為指導(dǎo)者:給予別人指導(dǎo),也是提升自己的一種方式,并且讓其他人亦開(kāi)始相信你可以幫助他們。分享自己的知識(shí)很有趣—-付出的同時(shí)便有收獲。還可以激勵(lì)別人獲得更好的成果,而且提升了整個(gè)團(tuán)隊(duì)的實(shí)力。
  • 42. 允許大家自己想辦法:給別人解決問(wèn)題的機(jī)會(huì)?!笆谌艘贼~(yú),三餐之需;授人以漁,終生之用”,指給他們正確的方向,而不是直接提供解決方案。每個(gè)人都能從中學(xué)到不少東西。
  • 43. 準(zhǔn)備好后再共享代碼:絕不提交尚未完成的代碼。故意check-in編譯未通過(guò)或者是沒(méi)有單元測(cè)試沒(méi)有通過(guò)的代碼,對(duì)項(xiàng)目來(lái)說(shuō),應(yīng)被視做玩忽職守的犯罪行為。
  • 44.做代碼復(fù)查:代碼復(fù)查即我們通過(guò)所說(shuō)的codereview, 對(duì)于提升代碼質(zhì)量和降低錯(cuò)誤率來(lái)說(shuō),代碼復(fù)查是無(wú)價(jià)之寶。如果以正確的方式進(jìn)行,復(fù)查可以產(chǎn)生非常實(shí)用而高效的成果。通常的做法是搭建codereview系統(tǒng),有經(jīng)驗(yàn)的開(kāi)發(fā)者來(lái)review開(kāi)發(fā)經(jīng)驗(yàn)比較少的開(kāi)發(fā)者的代碼,提高代碼質(zhì)量的同時(shí),幫助團(tuán)隊(duì)成員成長(zhǎng)。
  • 45.及時(shí)通報(bào)進(jìn)展和問(wèn)題:發(fā)布進(jìn)展?fàn)顩r、新的想法和目前正在關(guān)注的主題。不要等著別人來(lái)問(wèn)項(xiàng)目狀態(tài)如何。這樣,有情況發(fā)生時(shí),就不會(huì)讓人感到突然。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
高效程序員的40個(gè)好習(xí)慣和行為方式
讀《高效程序員的45個(gè)習(xí)慣》之筆記
20個(gè)毀掉你代碼的不良習(xí)慣 !
35 個(gè)讓你的代碼變得糟糕的不良習(xí)慣
一個(gè)老程序員的30年生涯回顧(譯文)
單元測(cè)試要做多細(xì)?
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服