《程序員修煉之道》筆記(九)

*續 第八章 注重實效的項目

?

1. 無處不在的自動化

文明通過增加我們不假思索就能完成的重要操作的數目而取得進步。

無論是構建和發布流程、是書面的代碼復查工作、還是其他任何在項目中反復出現的任務,都必須是自動的。人工流程不能保證一致性,也無法保證可重復性,特別是在不同的人對流程的各個方面有不同解釋時。使用shell腳本、批處理文件來處理流程,它們能以相同的次序反復執行同樣的指令,還能被置于源碼控制之下,定時調度工具也很有幫助。

?


?

?

2. 全都是寫

a) 要把文檔當做整個開發過程的完整組成部分加以接受。文檔和代碼可以緊密結合起來,作為同一模型的兩個視圖對待。

?

b) 內部文檔包括源碼注釋、設計與測試文檔等;外部文檔是發布到外界的任何東西,比如用戶手冊。但不管受眾是誰、撰寫者是誰,文檔都應該是代碼的反映。

?

c) 代碼中的注釋

注釋應該討論為何要做某事、它的目標等。代碼已經說明了它是怎樣完成的,所以再為此加注釋是多余的,而且也違反了DRY原則。

注釋中也適合記錄工程上的權衡、為何要做某些決策、放棄了哪些替代方案等等。

變量名應該精心選擇,并且有意義。匈牙利命名法(包括了變量類型信息)在面向對象的系統中并不合適。

比無意義的名稱更糟糕的是誤導人的名稱。

代碼應該有代碼作者、版權信息等內容,這些可以讓編輯器自動生成。

?

d) 任何形式的文檔都只是快照,可能剛剛發布出來就會過時,最好能采用自動化的方法及時更新。

文檔和代碼是同一底層模型的不同視圖,視圖是唯一應該不同的東西。不要讓文檔變成二等公民,被排除在項目主要工作流之外,對待文檔要像對待代碼一樣用心。

?


?

?

3. 極大的期望

在現實中,項目的成功是由它在多大程度上滿足了用戶的期望來衡量的。不符合用戶期望的項目注定是失敗的,不管交付的產品在絕對意義上有多好。要溫和地超出用戶的期望。要做到這一點建議做如下工作:

a) 交流期望。

用戶在一開始會有一些關于自己所需要的東西的想象,它們可能不完整、不一致或在技術上不可能做到,但那時他們的,他們也在其中投入了一些感情,不能簡單地忽視。

交流的目的是達成對開發過程和最終產品、以及他們尚未描述出來的期望的共同理解。如果團隊能與外界暢通地交流,這個過程幾乎是自動的。曳光彈、原型可以促進這一過程。

?

b) 額外一英里。

在與用戶緊密協作的過程中,用戶會及時了解項目的進展,那么當項目交付時就不會有多少讓人吃驚的事情了。這是一件糟糕的事情,要設法讓你的用戶驚訝(高興),給他們的東西要比他們期望的多一點,比如友好的幫助系統、快捷鍵、自動化安裝等等,通過這些讓用戶看到:開發團隊想要開發出了不起的系統。但不要因為增加的新特性而破壞系統。

?


?

?

4. 傲慢與偏見

a) 在你的作品上簽名。

?

b) 過去的手藝人為能在他們自己的作品上簽名而自豪,你也應該如此,我們在負責一項設計,或是一段代碼,我們是在做可以引以為傲的工作。

?

c) 但不要因為所有權而產生“地盤”意識:懷有偏見,只欣賞自己的代碼,排斥自己的同事。我們不應該懷著猜忌心理阻止別人查看自己的代碼,同樣應該帶著尊重對待別人的代碼。

?

d) 匿名可能會為邋遢、錯誤、懶惰和糟糕的代碼提供繁殖地。

?

e) 我們想要看到對所有權的自豪:“這是我編寫的,我對自己的工作負責”,你的簽名應該被視為質量的保證,當人們在一段代碼上看到你的名字時,應該期望它是可靠的,用心編寫的、測試過的和有文檔的,一個真正的專業作品,由真正專業人員編寫——一個注重實效的程序員。

?

轉載于:https://www.cnblogs.com/zhixin9001/p/6832114.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254646.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254646.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254646.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

flutter image boxfit

直接從官網文檔中復制記錄,方便以后查看contain → const BoxFitAs large as possible while still containing the source entirely within the target box.const BoxFit(1)cover → const BoxFitAs small as possible while still covering the entire target box…

rvm RuvyGem Cocoapods brew

開始的時候,我僅想升級一下cocoapods的版本,因為我xcode報三十多個相似警告,說第三方找不到相應文件,我看cocoapods版本有1.0.1,而我使用的依舊是1.0.0的老版本。當我升級cocoapods時,需要使用gem來更新coc…

Linux系統目錄說明

以前稍稍接觸過Linux系統,現今,因工作需要要更進一步學習Linux系統的相關程序開發。因此對于目錄(路徑)的了解及很重要了。/bin:是Binary的縮寫,這里保存了一百多個Linux下常用的命令、工具;這是…

const常量用法

目錄定義語法特點優點定義 常量就是在使用過程中不會變化的量叫做常量。 語法 const int A 100;//常量不允許改變特點 常量必須在聲明時初始化;常量的值必須在編譯時就定義好;常量總是隱式靜態的; 優點 易讀,易于程序修改&…

斯坦福大學機器學習——高斯判別分析

轉自 http://blog.csdn.net/linkin1005/article/details/39054023 同樸素貝葉斯一樣,高斯判別分析(Gaussian discriminant analysismodel, GDA)也是一種生成學習算法,在該模型中,我們假設y給定的情況下,x服…

嘉實多RO150合成齒輪油

Optigear ?合成 RO 是一個特殊的高性能,長期多級油特別為齒輪 軌道交通,機械工程應用中,一個極端的氣候條件和長期使用。 “ Microflux 跨的添加劑組合是免費的固體潤滑劑,甚至適應迅速變化的環境和積極…

線程隊列-queue

使用隊列的目的:解耦,使程序之間實現松耦合;提高處理效率FIFO 先進先出,first in first outLIFO 后入先出,last in first out生產者消費者模型使用方式1 import queue 2 3 #創建隊列對象,設置隊列大小ma…

MapGIS轉Shp文件的單位問題

MapGIS轉Shp文件的單位問題 原文:MapGIS轉Shp文件的單位問題在MapGIS瀏覽查看一下數據,各種不習慣;用mapgis自帶的轉shp功能,屬性表會出錯;利用名為map2shp的試用版軟件可將mapgis格式的數據較為良好轉成shp格式。但經常會遇到一個…

halcon2D Metrology測量算子,卡尺測量算子,持續更新

目錄2D Metrology1. add_metrology_object_circle_measure2. add_metrology_object_ellipse_measure3. add_metrology_object_generic4. add_metrology_object_line_measure5. add_metrology_object_rectangle2_measure6. align_metrology_model7. apply_metrology_model8. cle…

項目經理的職責

項目經理的職責: 1、項目范圍的定義 2、項目計劃的制定、分解、分配、協調、匯報 3、項目質量控制 4、項目需求變更配置 工作職責: 1、負責產品的研發任務的立項計劃及實施; 2、負責收集統計各項資料數據,完成自主研發部…

顯示/隱藏Mac系統中所有的隱藏文件

顯示: 在終端輸入:defaults write com.apple.finder AppleShowAllFiles YES隱藏: 在終端輸入:defaults write com.apple.finder AppleShowAllFiles NO然后重啟Finder即可(先點擊左上角的蘋果圖標,再選強制退出,然后選中Finder,點擊…

機械零點、MAM 文件 、 EMT標定原理

 機械零點、MAM 文件、EMT標定原理。 可調節的機械零點,不需要MAM文件,使之成為90度。 不可調節的機械零點,需要MAM文件修正,使之成為90度。 帶負載的偏移補償、帶負載的偏移補償mastering。做過帶負…

智慧城市的互聯網大腦架構圖:大社交網絡與智慧城市結合是關鍵

從本質上講智慧地球和智慧城市還是互聯網發展到一定程度,向城市建設蔓延和深入的結果。因此建設智慧城市就不能不忽略互聯網的發展趨勢和進化規律。 而越來越多的跡象表明“互聯網正在向著與人類大腦高度相似的方向進化,它將具備自己的視覺、聽覺、觸覺、…

halcon1D測量算子,持續更新

目錄1D Measuring 1D測量1.close_measure2. deserialize_measure3.fuzzy_measure_pairing4.fuzzy_measure_pairs5.fuzzy_measure_pos6.gen_measure_arc7.gen_measure_rectangle28.measure_pairs9.measure_pos10.measure_projection11.measure_thresh12. read_measure13.reset_f…

20145227鄢曼君《網絡對抗》Web安全基礎實踐

20145227鄢曼君《網絡對抗》Web安全基礎實踐 實驗后回答問題 1.SQL注入攻擊原理,如何防御? SQL注入攻擊指的是通過構建特殊的輸入作為參數傳入Web應用程序,而這些輸入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要…

[轉]Xvid參數詳解

眾所周知,Mencoder以其極高的壓縮速率和不錯的畫質贏得了很多朋友的認同! 原來用Mencoder壓縮Xvid的AVI都是使用Xvid編碼器的默認設置,現在我來給大家沖沖電,講解一下怎樣使用Mencoder命令行高級參數制作Xvid編碼格式AVI影片。經…

常用的Meta標簽寫法和作用

頁面關鍵詞  <meta name"keywords" content"your tags" />  頁面描述  <meta name"description" content"150 words" />  搜索引擎索引方式  <meta name"robots" content"index,follow"…

從庫存管理系統,體驗活字格強大的移動端應用開發能力

活字格&#xff0c;開放易用的 Web 應用生成平臺 隨著移動互聯網時代的來臨&#xff0c;企業在移動端管理和運營的需求急劇增加&#xff0c;這就要求企業應用系統要能做到工作流程自動規范、移動端操作流暢便捷、協同辦公快速高效、業務流程高度自定制、需求變更隨時修改等。 活…

Xvid編碼器流程(基于xvid1.1.0)

調用Xvid編碼器流程(基于xvid1.1.0) 編者按&#xff1a;本文為Xvid最新源代碼V1.1.0版本的學習筆記&#xff0c;內 部資料&#xff0c;僅供學習參考&#xff0c;未經授權&#xff0c;不得轉載 xvid有兩種編碼方式&#xff1a;single pass和twopass single pass模式編碼簡…