項目 | 內容 |
---|---|
本次做業所屬課程 | 2019BUAA軟件工程 |
本次做業要求 | 第1次我的做業 |
我在本課程的目標 | 熟悉和實踐軟件工程流程,適應團隊開發 |
本次做業的幫助 | 幫助理解《構建之法》 |
4.2.6 「命名」中提到了一些命名規則,對此我有一些疑問:html
「在變量名中不要提到類型或其餘語法方面的描述,如arraylistOfHolidays寫成holidays。」linux
相信沒有人會給一個類型徹底沒有歧義的變量起名爲「int_index」,當咱們試圖在變量名中加入類型時,每每是有必定目的的。我在實現部分機器學習算法時,用到了不少諸如dataFrame、array、list、mat格式的變量,而當程序思路正確卻沒法運行時,最多的錯誤就是維度問題和類型問題,不少error發生在*和np.dot混淆、array和list混淆的狀況下。印象中我在某個課上見過劉禹老師示範的C#代碼,彷佛也在容易混淆類型的變量名中加入了類型。所以我以爲,若是在變量名中加入類型對程序有幫助,也是值得推薦的代碼風格。git
4.3.2 「goto」提到了:github
"只要有助於程序邏輯的清晰體現,什麼方法均可以使用,包括goto。"算法
咱們在初學代碼時,就被告知「避免一切goto」,其緣由應該是防止初學者亂用goto下降了代碼的可讀性,也難以debug。事實上,goto在異常處理時很好用(如goto fail;),並且若是goto是前進式的結構,代碼可讀性也很強,這恐怕就是做者說的「有助於程序邏輯的清晰體現」了。但實際上,我認爲在除此以外,能避免使用goto的地方,都應當用其餘結構代替。我看到了這篇關於蘋果公司漏洞的討論,彷佛性能上的優勢也不能做爲使用goto的藉口。相反,過多的goto使用,讓代碼更加不易讀懂,這樣寫出來的代碼,就和IOCCC沒什麼區別了。’編程
16.1.4 「迷信之四:創新者都是身先士卒」中,舉了iPod、Gmail的例子,來講明創新者不必定是第一個提出創新想法的人。然而,這些後來跟進的人可以戰勝其餘人,想必也是有了一些其餘競品沒有的體驗或功能。是否是也能夠說,這些幫助他們戰勝對手的特色,也是創新呢?因此創新者應當是在關鍵功能上第一個提出並實現創新想法的人,他們一樣是身先士卒,但不必定是開創了一個行業,或許只是開創了行業裏最優質的服務和最吸引人的關鍵特色。服務器
17.1 「領導力」中,強調了團隊領導的重要性。聯想到即將開始的團隊編程,領導該如何肯定?極可能出現兩種狀況:一種是團隊裏有個大牛,因爲他的技術最好,你們都聽他的。另外一種是你們互相討論,少數服從多數,實際上沒有一個真正的領導。實際上,因爲你們都是技術人員,對項目方向上的把控水平可能都差很少,因此我認爲沒有領導的小團隊,應該也是能夠的吧?dom
9.3 「PM作開發和測試以外的全部事情」,提到了PM須要的能力和職責。現實中,PM具體如何保證項目進度?若是遇到技術人員廣泛落後進度,PM會怎麼作?機器學習
「軟件」:1953年,Richard R.Carhart在蘭德公司的備忘錄中首次使用這個詞。也有人認爲,是John Tukey在一篇1958年的論文"The Teaching of Concrete Mathematics"中首次使用。分佈式
「軟件工程」:Margaret H.Hamilton聲稱本身在阿波羅計劃期間發明了軟件工程一詞。實際上,這個概念是在1968年由NATO(北約)科技委員會在前聯邦德國的會議中提出,當時定義爲「研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟件,以及如何把通過時間考驗而證實正確的管理技術和當前可以獲得的最好的技術方法結合起來的學科」。
git名字由來:git由linux的發明者Linus發明,這個詞自己的意思是飯桶、爛人。在github上咱們能夠找到git的來源:
The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):
random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
"global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
"goddamn idiotic truckload of sh*t": when it breaks
總而言之,沒什麼優美的解釋。
我並無找到各個版本管理軟件的具體使用人數,但根據這份2015年stack overflow的調查結果和近幾年的趨勢來看,榜單中github的使用率應當會更高。
能夠服務器上克隆完整的Git倉庫到本地。由於分支在本地,分支切換更快。
各版本commit在本地,能夠隨時提交。易於代碼的分支化管理。
有優秀的開源社區github。
分佈式提交,可能出現衝突,須要先解決衝突再提交。
使用難度大。
對中文支持好,操做簡單。
較好的權限管理功能,能夠精確控制每一個目錄的權限。
集中式,若是中心服務器出現問題,全部人都不能正常工做。
commit必需要求聯網。
不只支持集中式代碼庫,還支持分佈式的源代碼庫。
高度集成主流的開發工具和常見的辦公工具。
搭建、維護比較複雜,硬件要求較高。
採用了分佈式系統,管理更加輕鬆。
不須要按期維護資料庫。
在合併時只容許兩層父階層版本異動。