需求分析是后續工作的基石,如果分析思路有問題,后續工作可能就會走向不正確的方向,比如:代碼重用性差、難于測試、難于擴展和難于維護等。反而,如果需求分析做的好,對設計、開發和測試來說,都可能是很大的幫助。
看到題目給出的條件達12個之多,粗粗一看,好像很復雜,但仔細分析之后,發現可以把它們分成4組來討論:
1、 條件1:a+b>c; 條件2:a+c>b; 條件3:b+c>a
這三個表達式有什么特點呢?實際上它們的邏輯是一樣的:兩個數之和大于第三個數。那么,前面程序的寫法就存在邏輯重復的地方,應該把這個邏輯提取到一個函數中。
2、 條件4:0
這三個表達式也是同一個邏輯:判斷一個數的范圍是否在(0, 200)區間內,也應該把這個邏輯提取到一個函數中,去掉重復的邏輯,提高代碼的可重用性。 可重用性的好處:比如,現在用戶的需求改為了三條邊的取值范圍要改為[100,400],那么,按前面的思路來說,需要改3個地方,而現在只需要在一個函數里改1個地方,這就是代碼重用的好處。 3、條件7:a==b; 條件8:a==c; 條件9:b==c 這三個表達式的邏輯:判斷兩個數是否相等。也應該把它提取到一個函數中。 我們進一步來分析一下判斷是否是等邊三角形或等腰三角形的條件: (1)前面程序的判斷是從最直觀的方式(a==b && b==c && a==c)(實際上只需要兩個表達式成立即可)三條邊都相等來判定是等邊三角形;(a==b || b==c || a==c)只有兩條邊相等來判定是等腰三角形。 (2)轉變一下思路:給定三個整數,然后用一個函數來判斷這三個整數有幾個相等,返回相等的個數,如果返回值等于3,那么它是等邊三角形,如果返回值是2,那么它是等腰三角形,否則,它是一般三角形(如果不是直角三角形的話)。 4、條件10:a2+b2==c2 條件11:a2+ c2== b2 條件12:c2+b2== a2 這三個條件的處理方式有兩種: (1)跟前面三組分析一樣,把相同的邏輯提取到一個函數中,然后三次調用。 (2)根據直角三角形的特點:斜邊是最長的,所以我們可以事先寫一個函數來找到最長的邊,然后把它賦值給c,這樣處理之后,只需要一次調用判定(a2+b2==c2)的函數了。 原文轉自:http://www.anti-gravitydesign.com