《構建之法》閱讀有疑
在用將近五節課的時間將鄒欣老師的書《構建之法——現代軟件工程》第二版大致看完。雖然全書是以輕松的口吻與”移山公司”員工的一些趣味談話來傳輸一些理念和思想的,但是讀完並理解依舊不是一件很容易的事情,並且在這過程中我對書中的一些看法抱有懷疑的態度,現將問題所在列在下面。
- P68頁:我不是很認同鄒老師的“精通”魔方的判定方法。就好像在軟件工程開發中,一個人解決了一個bug。解決了bug卻不算是“精通”,還得能恢復bug,再現bug才算是懂得各中原理嗎?我覺得作為一個軟件開發者,我們掌握解決bug的技巧與能力即可,不需要掌握復現bug的手段。
- P79頁:關於goto的使用。說實話這是我第一次看到goto的好話。我只見過goto在操作系統底層源碼使用的情況,當然,在操作系統底層有些時候使用goto跳到錯誤處理避免無謂的重復。但是使用goto即使是在操作系統底層也應該慎重使用,不知道鄒老師認為還有什么樣的情況屬於“有助於程序邏輯的清晰體現?”。
- P89頁:在這里關於結對編程我有一個困惑:如果結對編程的伙伴不與我溝通,並且對於結對編程沒有熱情,這樣的結對編程反而只會讓效率低下。在這種情況下,除了換結對伙伴外(一般出門在外,身不由己),怎樣能提高結對編程的效果?
- P85頁:真的有必要對不可能運行到的代碼路徑進行單元測試嗎?尤其是在本來封裝性很好的情況下,為了單元測試而強行拆解函數,把類增加了很多無用的方法?老師如何看待這種問題?
- P117頁:關於敏捷開發。敏捷開發的模式可以說是種輕便的模式,但是有一個嚴肅的問題擺在我們面前:小的創業團隊一旦敏捷開發了一款創意優秀的軟件並且在完善它到很好的程度前就發布了。這樣會不會引來大公司的創意剽竊?尤其是在財力,人力都不如大型公司的情況下,怎樣解決這種在敏捷開發中可能遇到的問題?
- 還有一個個人問題想問老師:為什么初入行業的軟件工程師總是對自己的代碼風格與效率盲目自信,而總想重構他人的代碼?一個項目進展到什么樣的程度才能叫不可維護,在怎樣的情況下才有正當的理由被重構?
軟件和軟件工程的出現
軟件一詞在: 1958 年Turkey在論文“The Teaching of Concrete Mathematics”中提出。
wiki原文為:
In 2000, Fred Shapiro, a librarian at the Yale Law School, published a letter revealing that Tukey’s 1958 paper “The Teaching of Concrete Mathematics”contained the earliest known usage of the term “software” found in a search of JSTOR’s electronic archives, predating the OED’s citation by two years.
軟件工程一詞是 Margaret Hamilton 在NASA設計阿波羅號電腦上的軟件時提出的新名詞。