1. 程式人生 > >基於《構建之法》的幾個小見解

基於《構建之法》的幾個小見解

關系 希望 階段 周期 這一 都在 urn blog foo

第一章 計算機科學和軟件工程的關系

中國大陸的高校中大致有下面三種將計算機軟件的機構:

計算機科學與技術系或學院

軟件學院

軟件工程系、軟件工程學院

問題1:

這一章有講到這些概念的區別和共性,但結尾又說到“希望讀者不再糾結科學和工程的問題,而是在不同的學習與工作階段,投入到最適合的項目類型中去”。我雖然對這些概念的分析和這句話表示非常贊同,但當下仍有一個現狀,那就是本科大學在代碼能力方面要比專科技術學校的軟件工程專業稍有遜色。軟件工程是工科,註重動手能力,而絕大多數計算機方面的本科更重視理論,理論都是大同小異,那麽區分這些概念的意義在哪裏?

很多大學生在畢業後都在抱怨本科四年自己根本沒學到什麽真本事,到了單位還要遭受白眼。我之後在各大平臺上看了一些關於軟件工程專業專科和本科的好與壞,眾說紛紜,但是卻始終離不開一個宗旨——一切都得靠自己。不管是實踐的機會多或少,還是偏科學或是工程,實踐少了就自己課下多敲敲代碼,基礎知識不懂就多看看書,我認為這才是一個大學生應有的態度。

第二章 個人技術和流程

單元測試應該覆蓋所測單元的所有代碼路徑,包括錯誤處理路徑。為了保證代碼覆蓋率,單元測試必須測試公開的和私有的函數/方法。

問題1:

對於單元測試這塊我對“覆蓋”這個動態過程不太理解,於是我去查找了相關資料才恍然大悟,用我自己的話來解釋就是執行語句,不僅是表面的語句覆蓋,還有邏輯上的覆蓋,比如下面的這個例子:

int foo(int a, int b)
{
   return  a / b;
}

假如帶入值去測試:

TeseCase: a = 10, b = 5

那麽代碼覆蓋率達到了100%,雖然語句覆蓋率達到了所謂的100%,但是卻有一個最簡單的bug,比如,當b=0時,會拋出一個除零異常。

第十六章 創新的招數

除了技術的創新,還有很多方面的創新:

商業模式的創新

用戶體驗的創新

生態系統的創新

問題1:

看到這兒,我不禁想到了一個遊戲,疊紙開發的《戀與制作人》。這個遊戲畫面、聲音等制作非常精美,服務器也算跟得上,可以說用戶體驗在同類產品中是很不錯的,但是這個遊戲非常氪金,所以我沒玩多久就卸掉了。我有些疑惑,是不是所有用戶體驗很棒的軟件都需要金錢來支撐?

後來想想,金錢是必要的。一個企業不會做賠本的買賣,就算是一個免費的軟件,比如騰訊QQ,它也會在黃鉆、會員等增值業務上是收費的;淘寶也是免費的,但阿裏巴巴怎麽賺錢我們都知道;《王者榮耀》會通過出售遊戲道具來賺錢。每個成功的公司都會有自己的商業模式,加上自己的技術和創新,投入金錢和人力,才能使一個軟件周期得到最大延長。

基於《構建之法》的幾個小見解