內容說明
項目 | 內容 |
---|---|
這個作業屬於哪個課程 | 羅傑 |
這個作業的要求在哪里 | 第一次閱讀 |
看完《構建之法》后仍然不懂的問題
4.3.2 goto
函數最好有單一的出口,為了達到這一目的,可以使用goto。只要有助於程序邏輯的清晰體現,什么方法都可以使用,包括goto。
在我第一次接觸c語言時,老師就力勸我們不要使用goto語句。這里使用goto語句的說法是從有助於程序邏輯的清晰體現的角度來看的,是否忽略了其他方面的問題呢?比如在一些比較復雜的代碼塊中,由於goto語句導致了程序結構的凌亂,而這還可能導致在某種情況下忘記執行在塊中退出時的操作,如釋放指針等。有時還會因為它可能跳過了某些對象的構造、變量的初始化、重要的計算等語句導致錯誤或留下隱患。
4.5.4 如何結對編程
書中說到,駕駛員負責寫設計文檔,進行編碼和單元測試等XP開發流程。
關於這里我有一個疑問,就是設計文檔應該是在設計階段就已經完成的工作,具體的設計應該是在兩個人溝通交流后達成的共識,設計文檔的寫作需要固定的分配給某個角色來完成嗎(尤其這里駕駛員和領航員還不是固定的一個人,而是一段時間一輪換的)?
16.1.2 迷思之二:大家都喜歡創新
不但大眾不喜歡創新,甚至連創新者自己都不例外,有些創新者甚至恨創新。我們設想一下:
假如你發明了電報,創辦了電報公司,並花費畢生精力建起了覆蓋全國的電報網。這時有個年輕的發明家上門推銷了他的創新——電話。
在這里,個人認為“你”對推銷新的發明的年輕人的恨(如果有的話),個人認為不主要是出於一個曾經的“創新者”對新的創新的不喜歡,而是既得利益者對變革的不滿。
16.1.4 迷思之四:創新者都是一馬當先
在這里,文中說到
其實,大部分成功的創新者都不是先行者,例如搜索引擎,Google是很晚才進入這個領域的。又如Apple的音樂播放器iPod,發布於2001年10月23日,在它之前市面上已經有很多同類的產品了。
Google和Apple等的確不是第一個進入該領域的,不能算是一馬當先,但他們一定也會他們自己的獨到之處,比該領域的第一個產品在某些方面有自己獨到的創新。比如文中之后提到的,蘋果公司推出iPod,通過iTunes提供高質量的音樂內容,打破了常規的商業模式,相對於先行者,蘋果公司有了這些創新,借助這些綜合手段才能后來居上。
17.4 關於豬、雞和鸚鵡的故事
關於豬、雞和鸚鵡的故事,書中說到:
豬:提供豬肉,做熏肉。
雞:提供雞蛋,做煎蛋。
鸚鵡:提供咨詢,每天閱讀大量博客,給其他團隊成員提供建議,……
……
把一件事情做成需要很多人的幫助,創業者要不拘一格吸引人才。但是我們也要分清楚團隊或成員的投入/承諾/責任屬於哪個級別,哪些是豬,哪些是雞,哪些是鸚鵡。一群豬全身心投入看似不錯,但無論多么努力,豬沒法下蛋。……
對於這一段的描述,我的理解是“豬”是全身心的投入項目中的人,“雞”是由於某些不是特別重要的原因而加入項目中的“大佬”,“鸚鵡”是圍觀級別的參與者。“雞”和“豬”的區別是在對項目的投入程度上,而不是在職業水平上的,那么“無論多么努力,豬沒法下蛋”是否有失偏頗了?
請問 “軟件” 和 “軟件工程” 這些詞匯是如何出現的 - 何時、何地、何人?
- 目前,許多人認為“軟件”一詞是由John Tukey於1958年的論文“The Teaching of Concrete Mathematics”中提出的。
- “軟件工程”一詞最早是由Margaret Hamilton在為阿波羅11號做軟件開發的任務時提出來的。
大家知道了軟件和軟件工程的起源,請問軟件工程發展的過程中有什么你覺得有趣的冷知識和故事?
- Guido van Rossum喜歡看喜劇團體Monty Python,所以發明了一個編程語言叫作Python。同樣的,Python自帶的那個IDE,IDLE名字來源於該團體的成員Eric Idle。此外,用來表示垃圾郵件的單詞spam也是出自Monty Python這部作品,而這個單詞在劇中指的是Spam品牌的午餐肉。
- 編程語言Perl的名字來源於珍珠Pearl,發明者Larry希望給語言起一個簡短而有積極含義的名稱。受到這個影響,松本行弘在發明Ruby的時候也從珠寶中選擇名字,並且選擇了Ruby。松本還提到,Ruby還跟誕生石(birthstone)有關,可是生於4月的松本行弘為什么選擇了七月份出生的同事的誕生石紅寶石呢。
上網調查一下目前流行的源程序版本管理軟件和項目管理軟件都有哪些, 各有什么優缺點? 請按照最近一兩年使用人數的多少, 從多到少排序並說明各自有多少用戶(估計),工具的優缺點。
目前流行的源程序版本管理軟件和項目管理軟件的用戶數排序
Name | Users | Projects |
---|---|---|
Assembla | Unknown | 526,581+ |
Phabricator | Unknown | Unknown |
GitHub | 31,000,000 | 100,000,000 |
Bitbucket | 5,000,000 | Unknown |
Launchpad | 3,965,288 | 40,881 |
SourceForge | 3,700,000 | 500,000 |
GitLab | 100,000 | 546,000 |
GNU Savannah | 93,346 | 3,848 |
OSDN | 54,826 | 6,294 |
Ourproject.org | 6,353 | 1,846 |
- GitHub
- 優點:GitHub提供Git存儲庫服務,基於web,允許你使用Git的源代碼管理功能,或者其特性。GitHub提供Git存儲庫服務,基於web,允許你使用Git的源代碼管理功能,或者其特性。
- 缺點:可能不是捕捉創意過程和記錄創意點子的最佳工具。對於這種特殊功能模擬可以選擇LayerVault 或其他相似工具。之前,我們已經強調過Github非常適用代碼跟蹤,但是卻不是最好的設計跟蹤工具。將圖片內容轉化為代碼,或者將設計用於產品設置,看起來依舊不是那樣順利。
- Trac
- 優點:非常靈活,可以隨心所欲控制可以和SVN集成。
- 缺點:功能不是很強大。
- Bugzilla
- 優點:免費,有中文版支持。
- 缺點:快速搜索結果不准確。只能管理缺陷。
- Apple Xcode
- 優點:編譯速度極快,每次操作都很快速和輕松。自動提供撤消、重做和保存功能,無需編寫任何編碼。
- 缺點:更新版本后,某個插件可能會失效。
- Microsoft TFS
- 優點:是對敏捷,msf,cmmi等項目、過程管理、過程改善的支持。任務版上能將需求、項目進度一覽無余,對於小團隊而言,比甘特圖更有用。
- 缺點:能應用起來的團隊、公司的數量極少,多數真正用起來,也就是源代碼管理這部分,這也僅僅是占TFS極小部分功能。
參考資料
[1] John Tukey-wiki
[3] https://www.zhihu.com/question/19811764/answer/19136365