国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php教程 php手冊(cè) 程序員編程十條戒律

程序員編程十條戒律

Jun 13, 2016 pm 12:22 PM
程式設(shè)計(jì)師 程式設(shè)計(jì)

1.- DRY: Don't repeat yourself.
DRY 是一個(gè)最簡(jiǎn)單的法則,也是最容易被理解的。但它也可能是最難被應(yīng)用的(因?yàn)橐龅竭@樣,我們需要在泛型設(shè)計(jì)上做相當(dāng)?shù)呐?,這并不是一件容易的事)。它意味著,當(dāng)我們?cè)趦蓚€(gè)或多個(gè)地方的時(shí)候發(fā)現(xiàn)一些相似的代碼的時(shí)候,我們需要把他們的共性抽象出來形一個(gè)唯一的新方法,并且改變現(xiàn)有的地方的代碼讓他們以一些合適的參數(shù)調(diào)用這個(gè)新的方法。

DRY 這一法則可能是編程屆中最通用的法則了,目前為止,應(yīng)該沒有哪個(gè)程序員對(duì)這一法則存有異議。但是,我們卻能發(fā)現(xiàn),一些程序在編寫單元測(cè)試(unit testing)時(shí)忘記了這一法則:讓我們相像一下,當(dāng)你改變一個(gè)類的若干接口,如果你沒有使用DRY,那么,那些通過調(diào)用一系例類的接口的unit test的程序,都需要被手動(dòng)的更改。比如:如果你的unit test的諸多test cases中沒有使用一個(gè)標(biāo)準(zhǔn)共有的構(gòu)造類的方法,而是每個(gè)test case自己去構(gòu)造類的實(shí)例,那么,當(dāng)類的構(gòu)造函數(shù)被改變時(shí),你需要修改多少個(gè)test cases啊。這就是不使用DRY法則所帶來的惡果。

2.- 短小的方法.
至少,我們有下面三個(gè)不錯(cuò)的理由要求程序員們寫下短小的方法。

代碼會(huì)變得更容易閱讀。
代碼會(huì)變得更容易重用(短方法可以減少代碼間的耦合程度)
代碼會(huì)變得更容易測(cè)試。
3.- 良好的命名規(guī)范
使用不錯(cuò)的統(tǒng)一的命名規(guī)范可以讓你的程序變得更容易閱讀和維護(hù),當(dāng)一個(gè)類,一個(gè)函數(shù),一個(gè)變量的名字達(dá)到了那種可以“望文生義”的境界話,我們就可以少一些文檔,少一些溝通。文章《編程中的命名設(shè)計(jì)那點(diǎn)事 》可以給你一些提示。

4.- 賦予每個(gè)類正確的職責(zé)
一個(gè)類,一個(gè)職責(zé),這類規(guī)則可以參考一下類的SOLID 法則。但我們這里強(qiáng)調(diào)的不是一種單一的職責(zé),而是一個(gè)正確的職責(zé)。如果你有一個(gè)類叫Customer,我們就不應(yīng)該讓這個(gè)類有sales 的方法,我們只能讓這個(gè)類有和Customer有最直接關(guān)系的方法。

5.- 把代碼組織起來
把代碼組織起來有兩具層次。

物理層組織:無(wú)論你使用什么樣的目錄,包(package)或名字空間(namespace)等的結(jié)構(gòu),你需要把你的類用一種標(biāo)準(zhǔn)的方法組織起來,這樣可以方便查找。這是一種物理性質(zhì)的代碼組織。
邏輯層組織: 所謂邏輯層,主要是說,我們?nèi)绻褍蓚€(gè)不同功能的類或方法通過某種規(guī)范聯(lián)系和組織起來。這里主要關(guān)注的是程序模塊間的接口。這就是我們經(jīng)常見到的程序模塊的架構(gòu)。
6.- 創(chuàng)建大量的單元測(cè)試
單元測(cè)試是最接近BUG的地方,也是修改BUG成本最低的地方,同樣也是決定整個(gè)軟件質(zhì)量好壞的成敗的地方。所以,只要有可能,你就應(yīng)該寫更多的,更好的單元測(cè)試案例,這樣當(dāng)你未來有相應(yīng)代碼改變的時(shí)候,你可以很簡(jiǎn)單知道你代碼的改變是否影響了其它單元。

7.- 經(jīng)常重構(gòu)你的代碼
軟件開發(fā)是一種持續(xù)的發(fā)現(xiàn)的過程,從而讓你的代碼可以跟上最新的實(shí)際需求的變化。所以,我們要經(jīng)常重構(gòu)自己的代碼來跟上這樣的變化。當(dāng)然,重構(gòu)是有風(fēng)險(xiǎn)的,并不是所有的重構(gòu)都是成功的,也不是我們隨時(shí)都可以重構(gòu)代碼。下面是兩個(gè)重構(gòu)代碼的先要條件,以避免讓你引入更多的BUG,或是把本來就爛的代碼變得更爛。

有大量的單元測(cè)試來測(cè)試。正如前面所說,重構(gòu)需要用大量的單元測(cè)試來做保障和測(cè)試。
每次重構(gòu)都不要大,用點(diǎn)點(diǎn)滴滴的小的重構(gòu)來代替那種大型的重構(gòu)。有太多的時(shí)候,當(dāng)我們一開始計(jì)劃重構(gòu)2000行代碼,而在3個(gè)小時(shí)后,我們就放棄這個(gè)計(jì)劃并把代碼恢復(fù)到原始的版本。所以,我們推薦的是,重構(gòu)最好是從點(diǎn)點(diǎn)滴滴積累起來的。
8.- 程序注釋是邪惡的
這一條一定是充滿爭(zhēng)議的,大多數(shù)程序員都認(rèn)為程序注釋是非常好的,是的,沒錯(cuò),程序注釋在理論上是非常不錯(cuò)的。但是,在實(shí)際過程序當(dāng)中,程序員們寫出來的注釋卻是很糟糕的(程序員的表達(dá)能力很有問題),從而導(dǎo)致了程序注釋成為了一切邪惡的化身,也導(dǎo)致了我們?cè)陂喿x程序的時(shí),大多數(shù)時(shí)候,我們都不讀注釋而直接讀代碼。所以,在這里,我們并不是鼓勵(lì)不寫注釋,而是——如果你的注釋寫得不夠好的話,那么,你還不如把更重要的時(shí)間花在重構(gòu)一下你的代碼,讓你的代碼更加易讀,更加清楚,這比會(huì)比注釋更好。

9.- 注重接口,而不是實(shí)現(xiàn)
這是一個(gè)最經(jīng)典的規(guī)則了。接口注重的是——“What”是抽象,實(shí)現(xiàn)注重的是——“How”是細(xì)節(jié)。接口相當(dāng)于一種合同契約,而實(shí)際的細(xì)節(jié)相當(dāng)于對(duì)這種合同契約的一種運(yùn)作和實(shí)現(xiàn)。運(yùn)作是可以很靈活的,而合同契約則需要是相對(duì)需要穩(wěn)定和不變的。如果,一個(gè)接口沒有設(shè)計(jì)好而需要經(jīng)常性的變化的話,那我們可以試想一下,這代來的后果,這絕對(duì)會(huì)是一件成本很大的事情。所以,在軟件開發(fā)和調(diào)設(shè)中,接口是重中之重,而不是實(shí)現(xiàn)。然而我們的程序員總是注重于實(shí)現(xiàn)細(xì)節(jié),所以他們局部的代碼寫的非常不錯(cuò),但軟件整體卻設(shè)計(jì)得相對(duì)較差。這點(diǎn)需要我們多多注意。

10.- 代碼審查機(jī)制
所有人都會(huì)出錯(cuò),一個(gè)人出錯(cuò)的概率是很大的,兩個(gè)人出錯(cuò)的概率就會(huì)小一些,人多一些,出錯(cuò)的概率就會(huì)越來越小。因?yàn)?,人多了,就能夠從不同的角度看待一個(gè)事情,雖然這樣可能導(dǎo)致無(wú)效率的爭(zhēng)論,但比起軟件產(chǎn)品release后出現(xiàn)問題的維護(hù)成本,這點(diǎn)成本算是相當(dāng)值得的。所以,這就是我們需要讓不同的人來 reivew代碼,代碼審查機(jī)制不但是一種發(fā)現(xiàn)問題的最有效的機(jī)制,同時(shí)也是一種可以知識(shí)共享的機(jī)制。當(dāng)然,對(duì)于Code Review來說,下面有幾個(gè)基本原則:

審查者的能力一定要大于或等于代碼作者的能力,不然,代碼審查就成了一種對(duì)新手的training。
而且,為了讓審查者真正負(fù)責(zé)起來,而不是在敷衍審查工作,我們需要讓審查者對(duì)審查過的代碼負(fù)主要責(zé)任,而不是代碼的作者。
另外,好的代碼審查應(yīng)該不是當(dāng)代碼完成的時(shí)候,而是在代碼編寫的過程中,不斷地迭代代碼審查。好的實(shí)踐的,無(wú)論代碼是否完成,代碼審核需要幾天一次地不斷地進(jìn)行。

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

使用 Python 解決問題:作為初學(xué)者,解鎖強(qiáng)大的解決方案 使用 Python 解決問題:作為初學(xué)者,解鎖強(qiáng)大的解決方案 Oct 11, 2024 pm 08:58 PM

Python 讓初學(xué)者能夠解決問題。

釋放你內(nèi)心的程式設(shè)計(jì)師:C 絕對(duì)初學(xué)者 釋放你內(nèi)心的程式設(shè)計(jì)師:C 絕對(duì)初學(xué)者 Oct 11, 2024 pm 03:50 PM

C語(yǔ)言是初學(xué)者學(xué)習(xí)程式設(shè)計(jì)的理想選擇,其優(yōu)點(diǎn)包括效率、多功能性和可移植性。學(xué)習(xí)C語(yǔ)言需要:安裝C編譯器(如MinGW或Cygwin)了解變數(shù)、資料型別、條件語(yǔ)句和迴圈語(yǔ)句編寫包含主函數(shù)和printf()函數(shù)的第一個(gè)程式透過實(shí)戰(zhàn)案例(如計(jì)算平均數(shù))練習(xí)C語(yǔ)言知識(shí)

Python 的力量,簡(jiǎn)單:一種適合初學(xué)者的程式設(shè)計(jì)方法 Python 的力量,簡(jiǎn)單:一種適合初學(xué)者的程式設(shè)計(jì)方法 Oct 11, 2024 pm 04:53 PM

Python程式設(shè)計(jì)入門安裝Python:從官方網(wǎng)站下載並安裝。 HelloWorld!:使用print("HelloWorld!")列印第一行程式碼。實(shí)戰(zhàn)案例:計(jì)算圓面積:使用π(3.14159)和半徑計(jì)算圓面積。變數(shù)和資料類型:使用變數(shù)儲(chǔ)存數(shù)據(jù),Python中的資料類型包括整數(shù)、浮點(diǎn)數(shù)、字串和布林值。表達(dá)式與賦值:使用運(yùn)算子將變數(shù)、常數(shù)和函數(shù)連接起來,並使用賦值運(yùn)算子(=)將值賦給變數(shù)??刂屏鞒蹋篿f-else語(yǔ)句:根據(jù)條件執(zhí)行不同的程式碼區(qū)塊,確定奇

揭秘 C:為新程式設(shè)計(jì)師提供一條清晰簡(jiǎn)單的道路 揭秘 C:為新程式設(shè)計(jì)師提供一條清晰簡(jiǎn)單的道路 Oct 11, 2024 pm 10:47 PM

C是初學(xué)者學(xué)習(xí)系統(tǒng)程式設(shè)計(jì)的理想選擇,它包含以下元件:頭檔、函數(shù)和主函數(shù)。一個(gè)簡(jiǎn)單的C程式可以列印“HelloWorld”,需要包含標(biāo)準(zhǔn)輸入/輸出函數(shù)聲明的頭文件,並在主函數(shù)中使用printf函數(shù)來列印。透過使用GCC編譯器可以編譯和執(zhí)行C程式。掌握基礎(chǔ)後,可以繼續(xù)學(xué)習(xí)資料類型、函數(shù)、陣列和文件處理等主題,以成為熟練的C程式設(shè)計(jì)師。

創(chuàng)造未來:零基礎(chǔ)的 Java 編程 創(chuàng)造未來:零基礎(chǔ)的 Java 編程 Oct 13, 2024 pm 01:32 PM

Java是熱門程式語(yǔ)言,適合初學(xué)者和經(jīng)驗(yàn)豐富的開發(fā)者學(xué)習(xí)。本教學(xué)從基礎(chǔ)概念出發(fā),逐步深入解說進(jìn)階主題。安裝Java開發(fā)工具包後,可透過建立簡(jiǎn)單的「Hello,World!」程式來實(shí)踐程式設(shè)計(jì)。理解程式碼後,使用命令提示字元編譯並執(zhí)行程序,控制臺(tái)上將輸出「Hello,World!」。學(xué)習(xí)Java開啟了程式設(shè)計(jì)之旅,隨著掌握程度加深,可創(chuàng)建更複雜的應(yīng)用程式。

Java 變得簡(jiǎn)單:程式設(shè)計(jì)能力的初學(xué)者指南 Java 變得簡(jiǎn)單:程式設(shè)計(jì)能力的初學(xué)者指南 Oct 11, 2024 pm 06:30 PM

JavaMadeSimple:ABeginner'sGuidetoProgrammingPower簡(jiǎn)介Java是一種強(qiáng)大的程式語(yǔ)言,廣泛應(yīng)用於從行動(dòng)應(yīng)用程式到企業(yè)級(jí)系統(tǒng)的各種領(lǐng)域。對(duì)於初學(xué)者來說,Java的文法簡(jiǎn)潔易懂,是學(xué)習(xí)程式設(shè)計(jì)的理想選擇。基本語(yǔ)法Java使用基於類別的物件導(dǎo)向程式設(shè)計(jì)範(fàn)式。類別是將相關(guān)資料和行為組織在一起的範(fàn)本。以下是一個(gè)簡(jiǎn)單的Java類別範(fàn)例:publicclassPerson{privateStringname;privateintage;

編碼的關(guān)鍵:為初學(xué)者釋放 C 的力量 編碼的關(guān)鍵:為初學(xué)者釋放 C 的力量 Oct 13, 2024 am 11:44 AM

C語(yǔ)言,作為程式設(shè)計(jì)基礎(chǔ),憑藉其高效性和通用性,為初學(xué)者開啟程式設(shè)計(jì)大門。其簡(jiǎn)單語(yǔ)法由關(guān)鍵字、識(shí)別碼、資料類型和操作符構(gòu)成。變數(shù)用於儲(chǔ)存數(shù)據(jù),資料類型決定了變數(shù)的範(fàn)圍。運(yùn)算子對(duì)資料進(jìn)行操作,表達(dá)式用於計(jì)算值??刂屏鞒陶Z(yǔ)句控製程式執(zhí)行順序,包括if、for和while迴圈。函數(shù)是可重複使用的程式碼區(qū)塊,可接受參數(shù)並傳回值。實(shí)戰(zhàn)案例中,C語(yǔ)言程式可計(jì)算圓的面積,讀取半徑並使用公式計(jì)算面積,輸出結(jié)果。

HTML可以編程嗎?局限性和功能 HTML可以編程嗎?局限性和功能 May 30, 2025 am 12:05 AM

HTML不是編程語(yǔ)言,但可以通過JavaScript和服務(wù)器端語(yǔ)言(如PHP)實(shí)現(xiàn)動(dòng)態(tài)功能。 1.HTML結(jié)構(gòu)內(nèi)容,2.JavaScript使其互動(dòng),3.服務(wù)器端語(yǔ)言動(dòng)態(tài)生成HTML。

See all articles