天天看點

第二次部落格作業

一、是否需要有代碼規範

1.“這些規範都是官僚制度下産生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。”

  其實好的代碼風格自然而然就形成了,比如等号兩邊的空格和大括号的位置,形成習慣之後并不會浪費時間,反而是寫的亂七八糟的話之後的複查會浪費時間。

2.“我是個藝術家,手藝人,我有自己的規範和原則。”

  額...再藝術也是個程式員吧...如果說你寫的代碼隻由你來維護的話就算寫成梵高的畫也沒關系,但是代碼是永存的,人是會被拍在沙灘上的,還是能讓大家讀懂的好。

3.“規範不能強求一律,應該允許很多例外。”

  一堆例外的話,還怎麼規範啊...雖然沒有什麼“程式員法”來規定代碼必須按怎麼樣的樣式寫,但一個大家都已經預設的規範打破他也沒有什麼好處。

4.“我擅長制定編碼規範,你們聽我的就好了。”

  如果真的是那樣的話其實也不錯啊...如果真的有比現在更好的代碼規範那我願意使用。

二、代碼複審

1.Does the code work? Does it perform its intended function, the logic is correct etc.

  能夠正常輸出表達式到檔案,也支援答案對比檢測功能。

2.Is all the code easily understood?

  如果從中國程式員的角度真的很好了解(因為用了拼音表示變量)...但是最好還是用英語來表示變量吧。截取代碼片段如下:

1 //除法
 2 Digital Digital::DivDigital(Digital anDigital)
 3 {
 4     long long miFenzi;
 5     long long miFenmu;
 6     long long anFenzi;
 7     long long anFenmu;
 8 
 9     if (fenzi == 0)
10     {
11         miFenzi = num;
12         miFenmu = 1;
13     }
14     else
15     {
16         miFenzi = fenzi + num * fenmu;
17         miFenmu = fenmu;
18     }
19 
20     if (anDigital.fenzi == 0)
21     {
22         anFenzi = 1;
23         anFenmu = anDigital.num;
24     }
25     else
26     {
27         anFenzi = anDigital.fenmu;
28         anFenmu = anDigital.fenzi + anDigital.num * anDigital.fenmu;
29     }
30 
31     long long sumFenzi = miFenzi * anFenzi;
32     long long sumFenmu = miFenmu * anFenmu;
33 
34     if (sumFenzi == 0 || sumFenmu == 0)
35     {
36         num = 0;
37         fenzi = 0;
38         fenmu = 0;
39     }
40     else
41     {
42         num = sumFenzi / sumFenmu;
43 
44         fenzi = sumFenzi % sumFenmu;
45 
46         fenmu = sumFenmu;
47         Simplify();
48     }
49     return *this;
50 }      

3.Does it conform to your agreed coding conventions? These will usually cover location of braces, variable and function names, line length, indentations, formatting, and comments.

  額,代碼的形式風格還是很相似的(也許是因為vs的強制規範風格),但是我的變量名用的是英文表示,較長的英文則取單詞的前三至四個字母表示。他在每個函數/方法前簡要的注釋了一下,我也是如此。

4.Is there any redundant or duplicate code?

  該代碼備援較低,計算方法和數的存儲都比較簡潔。

5.Is the code as modular as possible?

  還不是十分的子產品化。

6.Can any global variables be replaced?

  并沒有全局變量。

7.Do loops have a set length and correct termination conditions?

  是的。截取以下代碼為例:

1 long long getLong(char * str)
 2 {
 3     long long l = 0;
 4     int i = 0;
 5     while (str[i] != '\0')
 6     {
 7         l = l * 10 + str[i] - '0';
 8         i++;
 9     }
10     return l;
11 }      

8.Are all data inputs checked (for the correct type, length, format, and range) and encoded?

  測試了一些邊界資料均有相應的處理。

9.Where third-party utilities are used, are returning errors being caught?

  并沒有使用第三方程式。

總結

  第一次作業我使用的是c#語言編寫的,而我的結對夥伴是使用的c++語言,我對c++語言了解較少,是以很多地方都是通過結對夥伴的講解才了解到的,是以我從此次結對項目中獲得了很多。