dry這一法則可能是程式設計屆中最通用的法則了,目前為止,應該沒有哪個程式設計師對這一法則存有異議。但是,我們卻能發現,一些程式在編寫單元測試(unittesting)時忘記了這一法則:讓我們相像一下,當你改變乙個類的若干介面,如果你沒有使用dry,那麼,那些通過呼叫一系例類的介面的unittest的程式,都需要被手動的更改。比如:如果你的unit test的諸多testcases中沒有使用乙個標準共有的構造類的方法,而是每個testcase自己去構造類的例項,那麼,當類的建構函式被改變時,你需要修改多少個test cases啊。這就是不使用dry法則所帶來的惡果。
至少,我們有下面三個不錯的理由要求程式設計師們寫下短小的方法。
**會變得更容易閱讀。
**會變得更容易重用(短方法可以減少**間的耦合程度)
**會變得更容易測試。
使用不錯的統一的命名規範可以讓你的程式變得更容易閱讀和維護,當乙個類,乙個函式,乙個變數的名字達到了那種可以「望文生義」的境界話,我們就可以少一些文件,少一些溝通。文章《程式設計中的命名設計那點事
》可以給你一些提示。
把**組織起來有兩具層次。
單元測試是最接近bug的地方,也是修改bug成本最低的地方,同樣也是決定整個軟體***壞的成敗的地方。所以,只要有可能,你就應該寫更多的,更好的單元測試案例,這樣當你未來有相應**改變的時候,你可以很簡單知道你**的改變是否影響了其它單元。
軟體開發是一種持續的發現的過程,從而讓你的**可以跟上最新的實際需求的變化。所以,我們要經常重構自己的**來跟上這樣的變化。當然,重構是有風險的,並不是所有的重構都是成功的,也不是我們隨時都可以重構**。下面是兩個重構**的先要條件,以避免讓你引入更多的bug,或是把本來就爛的**變得更爛。
有大量的單元測試來測試。正如前面所說,重構需要用大量的單元測試來做保障和測試。
每次重構都不要大,用點點滴滴的小的重構來代替那種大型的重構。有太多的時候,當我們一開始計畫重構2000行**,而在3個小時後,我們就放棄這個計畫並把**恢復到原始的版本。所以,我們推薦的是,重構最好是從點點滴滴積累起來的。
這一條一定是充滿爭議的,大多數程式設計師都認為程式注釋是非常好的,是的,沒錯,程式注釋在理論上是非常不錯的。但是,在實際過程式當中,程式設計師們寫出來的注釋卻是很糟糕的(程式設計師的表達能力很有問題),從而導致了程式注釋成為了一切**的化身,也導致了我們在閱讀程式的時,大多數時候,我們都不讀注釋而直接讀**。所以,在這裡,我們並不是鼓勵不寫注釋,而是——如果你的注釋寫得不夠好的話,那麼,你還不如把更重要的時間花在重構一下你的**,讓你的**更加易讀,更加清楚,這比會比注釋更好。
這是乙個最經典的規則了。介面注重的是——「what」是抽象,實現注重的是——「how」是細節。介面相當於一種合同契約,而實際的細節相當於對這種合同契約的一種運作和實現。運作是可以很靈活的,而合同契約則需要是相對需要穩定和不變的。如果,乙個介面沒有設計好而需要經常性的變化的話,那我們可以試想一下,這代來的後果,這絕對會是一件成本很大的事情。所以,在軟體開發和調設中,介面是重中之重,而不是實現。然而我們的程式設計師總是注重於實現細節,所以他們區域性的**寫的非常不錯,但軟體整體卻設計得相對較差。這點需要我們多多注意。
所有人都會出錯,乙個人出錯的概率是很大的,兩個人出錯的概率就會小一些,人多一些,出錯的概率就會越來越小。因為,人多了,就能夠從不同的角度看待乙個事情,雖然這樣可能導致無效率的爭論,但比起軟體產品release後出現問題的維護成本,這點成本算是相當值得的。所以,這就是我們需要讓不同的人來reivew**,**審查機制不但是一種發現問題的最有效的機制,同時也是一種可以知識共享的機制。當然,對於codereview來說,下面有幾個基本原則:
程式設計好習慣養成記
只做椅子的前1 3部分,這個是我上初中的時候,我們校長教我們的,這樣坐更有精神,注意力更容易集中。經過驗證確實是這樣,如果整個身子都靠著椅子上,容易注意力不集中,還容易累。起名字看似不難,但是要經過深思熟慮,取出名副其實 表達性好的名字並不是一件很容易的事。命名為什麼難呢?因為命名的過程本身就是乙個...
養成好習慣!
今天寫了乙個頁面,被組長說 寫的還行,這是我實習乙個月以來得到的乙個比較好的評價了 今天是1月8號,剛好我實習乙個月。回顧這乙個月,寫的頁面不多,主要是自己寫的速度太慢。但是這個月學到很多東西,從乙個可以說就只懂皮毛的小白到現在基本能寫的組長說的還行的 也是不容易啊 還記得我一開始連切圖都不會,切圖...
好習慣的養成
1 以後一定要像今天這樣,如果是用別人的 就一定要用注釋寫清楚每一條語句的含義。2 堅持一小下,才能一點兒點兒地發現有機可成 功 才能讓自己地產生 自信,以 樂觀的心態面對生活中的每一件事,開心每一天。3 對自己狠一點兒,一定要多看書,多敲 往往最重要的理論就在細微之處,卻很難被一般人發現。4 我希...