一、是否需要有代碼規範
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++語言了解較少,是以很多地方都是通過結對夥伴的講解才了解到的,是以我從此次結對項目中獲得了很多。