自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提升代碼內(nèi)外部質(zhì)量的22條經(jīng)驗(yàn)

開發(fā) 項(xiàng)目管理
本文主要關(guān)注代碼的內(nèi)部和外部質(zhì)量,編程的價(jià)值觀,代碼質(zhì)量的評(píng)估標(biāo)準(zhǔn),整潔代碼的匠藝以及如何維護(hù)已有的代碼。

本文主要關(guān)注代碼的內(nèi)部和外部質(zhì)量,編程的價(jià)值觀,代碼質(zhì)量的評(píng)估標(biāo)準(zhǔn),整潔代碼的匠藝以及如何維護(hù)已有的代碼。

外部質(zhì)量:用戶所能感受到的部分,正確性,易用性,效率,可靠性。

內(nèi)部質(zhì)量(代碼質(zhì)量):可維護(hù)性,靈活性,可移植性,重用,可讀性,可測(cè)試性,可理解性。

總結(jié)的22條經(jīng)驗(yàn)如下:

  1. 代碼分為外部質(zhì)量和內(nèi)部質(zhì)量,好的產(chǎn)品不等于好的代碼(Good Software != Quality Code)。
  2. 產(chǎn)品的冰山效應(yīng):產(chǎn)品經(jīng)理以及用戶關(guān)注的部分只是冰山露在水面以上的部分,隱藏在下面的是看不見的更加龐大的部分,那就是我們龐大的代碼。
  3. [[85970]]

  4. 拒絕 PPT 架構(gòu)師,架構(gòu)師應(yīng)當(dāng)寫代碼,哪怕這些代碼并不 Check-in 到最終的代碼庫(kù)中。一個(gè)好的設(shè)計(jì)不是在憑空產(chǎn)生的,而是經(jīng)過不斷打磨、修改進(jìn)而獲得的。不存在一次設(shè)計(jì),程序猿無(wú)腦堆砌代碼能夠完成的好的程序。
  5. [[85971]][[85972]]

  6. 編程的價(jià)值觀:溝通、簡(jiǎn)單、靈活。
  7. 代碼最重要的功能是傳遞程序員的設(shè)計(jì)和思路,其次才是實(shí)現(xiàn)的功能。好的程序員應(yīng)當(dāng)寫出人類能夠看懂的代碼,而不是機(jī)器能理解的代碼。
  8. 效率不是犧牲清晰性的理由,不能夠因?yàn)槿酥饔^“認(rèn)為”的一些小伎倆,使用晦澀的代碼,企圖以此提升性能。應(yīng)當(dāng)依賴編譯器本身的優(yōu)化,依賴工具對(duì)性能低下的點(diǎn)進(jìn)行評(píng)測(cè),進(jìn)而進(jìn)行針對(duì)性的優(yōu)化。
  9. 不要試圖死磕代碼加快速度,找個(gè)更加有效的算法可能更加有效。
  10. 代碼要先做對(duì),在弄快。先使其可靠,再讓其更快。先把代碼弄干凈,再讓它變快。
  11. Good code is not bad code。壞的代碼是可以通過一些指標(biāo)進(jìn)行度量的。讓壞代碼的指標(biāo)可以被機(jī)器固化并時(shí)時(shí)檢查,確保代碼不會(huì)變得更糟。
  12. 函數(shù)本身不是用來復(fù)用,這和很多“主流的”觀點(diǎn)不同。函數(shù)的存在的主要意義在于:劃分獨(dú)立職責(zé),隱藏具體細(xì)節(jié)操作,使得代碼具有可讀性,應(yīng)對(duì)擴(kuò)展的變化,方便進(jìn)行單元測(cè)試。順帶的,偶爾可以用作復(fù)用。
  13. 函數(shù)應(yīng)當(dāng)遵循:?jiǎn)我怀橄髮哟卧瓌t、短小原則和單一職責(zé)原則。
  14. 當(dāng)發(fā)現(xiàn)一個(gè)函數(shù)具有以下特征時(shí),需要考慮抽取函數(shù):
    • 過長(zhǎng)
    • 嵌套層數(shù)過深。
    • 自然分塊,需要使用注釋描述該程序塊
    • 判斷條件過于復(fù)雜
    • 函數(shù)的某些判斷分支不斷變化
    • 參數(shù)過于復(fù)雜
    • 邏輯重復(fù)
  15. 局部變量應(yīng)當(dāng)用途單一
  16. 新寫代碼邏輯,應(yīng)當(dāng)關(guān)注用戶場(chǎng)景和類職責(zé)劃分,不應(yīng)當(dāng)上來就考慮我要使用一個(gè)什么模式。這樣勢(shì)必會(huì)導(dǎo)致過度設(shè)計(jì)。模式用作應(yīng)對(duì)變化,當(dāng)后續(xù)版本發(fā)生變化時(shí),模式用作重構(gòu)現(xiàn)有代碼。
  17. 不斷重構(gòu),保持代碼簡(jiǎn)潔。
  18. 代 碼是債務(wù),一個(gè)程序員欠下的債務(wù),總是要還的,雖然可能不是由本人還。維護(hù)老代碼的程序員又被稱作代碼考古工程師,經(jīng)常在一大堆糟亂的代碼中挖掘最初的用 戶需求,往往這些需求淹沒在無(wú)數(shù)的變更歷史中。維護(hù)老代碼是一個(gè)費(fèi)時(shí)費(fèi)力的過程。需要一些技巧減小修改老代碼的風(fēng)險(xiǎn)。
  19. 程序員應(yīng)當(dāng)將整潔的代碼風(fēng)格作為一種習(xí)慣,時(shí)刻意識(shí)到整潔代碼的重要性并不斷地提高重構(gòu)技巧。
  20. 意圖導(dǎo)向編程可以輔助思考,并生成易懂代碼。
  21. 設(shè)計(jì)模式本身是用做應(yīng)對(duì)變化的。如果在開發(fā)時(shí)就想著“我要用模式”,很可能會(huì)導(dǎo)致過度設(shè)計(jì)。在對(duì)代碼進(jìn)行重構(gòu)時(shí),才應(yīng)當(dāng)考慮使用設(shè)計(jì)模式解決問題。
  22. 函數(shù)名稱很重要。
  23. 關(guān)于注釋:
    • 如果能用短小函數(shù)描述,則使用子函數(shù)替代注釋本身。
    • 確保注釋和代碼表達(dá)的意圖一致,否則就失去了注釋的意義。
    • 在重要的地方寫注釋,不要注釋滿天飛,簡(jiǎn)單的重復(fù)代碼的功能是毫無(wú)意義的。要讓每一處注釋都有價(jià)值。不要過分注釋。
  24. 關(guān)于何時(shí)重寫代碼
    • 開發(fā)團(tuán)隊(duì)要預(yù)留20% 的時(shí)間用作保持對(duì)原有系統(tǒng)的重構(gòu)。剩余的時(shí)間用作開發(fā)新功能。
    • 只要有可能,對(duì)所要重構(gòu)的部分進(jìn)行遞增修改,讓用戶切身感受到產(chǎn)品的改進(jìn),哪怕將工作時(shí)間延長(zhǎng)。

以上經(jīng)驗(yàn)分享,結(jié)合到具體工作,可能有場(chǎng)景需要考慮:

近 幾年不少研發(fā)團(tuán)隊(duì)逐步往快速迭代方向轉(zhuǎn)移,其中應(yīng)當(dāng)更多地關(guān)注目前代碼的內(nèi)部質(zhì)量,是否有足夠的單元測(cè)試保證代碼的穩(wěn)定性,是否不斷地在進(jìn)行重構(gòu)保證代碼 的簡(jiǎn)潔。在快速應(yīng)對(duì)變化的同時(shí),代碼不能絲毫打折扣。我們要經(jīng)常反思,我們估計(jì)的時(shí)間,是否已經(jīng)考慮給開發(fā)團(tuán)隊(duì)預(yù)留了足夠的重構(gòu)時(shí)間?產(chǎn)品經(jīng)理是否足夠的 了解代碼目前的質(zhì)量狀態(tài)?我們是否在欠債?

對(duì)于維護(hù)現(xiàn)有代碼,我們經(jīng)常是直接野蠻的在原有代碼中繼續(xù)累加邏輯,很少考慮重構(gòu),導(dǎo)致原有邏輯越來越復(fù)雜,難以理解。這一點(diǎn)應(yīng)當(dāng)受到更多關(guān)注。

最后引用一句話,與大家共勉:

知識(shí)不在于記住多少,而是在于它出發(fā)了你多少的思考。一旦我們開始反思我們的代碼,代碼將不再一樣。

原文鏈接:http://powertoolsteam.blog.51cto.com/2369428/1298688

責(zé)任編輯:陳四芳 來源: 葡萄城控件博客
相關(guān)推薦

2012-02-07 09:52:43

項(xiàng)目管理

2015-08-25 11:23:40

Qlik數(shù)據(jù)整合

2022-03-25 09:22:42

代碼開發(fā)

2022-09-05 08:02:58

網(wǎng)絡(luò)await?catch

2017-01-20 09:45:20

JavaScript代碼質(zhì)量

2024-08-06 12:35:42

C#代碼重構(gòu)

2024-02-19 14:50:42

編碼原則軟件開發(fā)

2014-12-15 14:39:00

Java

2024-05-14 15:28:09

Python類型提示開發(fā)

2011-03-22 16:54:58

SQL語(yǔ)句

2024-10-30 08:08:45

2021-08-19 15:19:16

代碼開發(fā)模型

2014-02-04 19:48:07

重構(gòu)代碼質(zhì)量

2023-10-31 16:22:31

代碼質(zhì)量軟件開發(fā)Java

2020-07-20 15:34:24

Oracle 架構(gòu)框架

2020-11-13 15:20:16

SCSS代碼前端

2023-10-10 14:57:49

2013-03-21 10:51:06

開發(fā)者代碼質(zhì)量開發(fā)經(jīng)驗(yàn)

2018-06-26 08:42:55

Linux密碼學(xué)公鑰
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)