1. 程式人生 > >結對編程隊友代碼分析

結對編程隊友代碼分析

struct for int 初中 三角函數 至少 out oot 檢驗

代碼由C++完成, 主體函數是通過對年級判斷然後調用相應函數進行出題

對於運算的實現是通過結構體實現的, 具體如下:

struct  yunsuan   //小學運算的結構體
{
    string left1;            //內層左括號
    string right1;          //內層右括號
    string left2;          //外層左括號
    string right2;        //外層右括號
    int num;             //運算數
    string signal;      //運算符
};
struct  yunsuan2   //
初中運算的結構體 { string left1; //內層左括號 string right1; //內層右括號 string left2; //外層左括號 string right2; //外層右括號 int num; //運算數 string signal; //運算符 string sqr; //平方 string root; //開方 }; struct yunsuan3 //高中運算的結構體 { string left1; //
內層左括號 string right1; //內層右括號 string left2; //外層左括號 string right2; //外層右括號 int num; //運算數 string signal; //運算符 string sqr; //平方 string root; //開方 string san; //三角函數符號 };

並且對於每個相應的小功能都具有獨立的函數, 並且函數都符合SRP

代碼的優點:

1.格式規範, 能一眼理出各個模塊與大致思路, 有很清楚地註釋, 方便閱讀與理解, 並且將所有功能全部實現

2. 即上面提出的, 每個模塊只為一個功能負責, 每個模塊都實現一個小功能, 並且每個模塊都很精簡, 例如:

int insure1(test2 &t2,int &chuti)               //確保平方或開方至少出現1次    chuti操作數 
{
    int check=0;                 //檢驗生成的算式是否合格,若不合格則在output中重新生成
    for(int j=0;j<chuti-1;j++)
    {
        if(t2.yun2[j].sqr=="^2" || t2.yun2[j].signal=="")
        {
            check=1;
            break;
        } 
    }
    return check;
} 

3. 在代碼實現上, 特別在括號的實現上, 他采取了隨機選取內外括號的方式, 而我是采用在每個操作數之間進行隨機是否添加括號然後排除幾種特殊情況, 我的這種方式會有遺漏並且容易產生問題

缺點:

1. 代碼中用戶登錄進行的是對用戶名進行if判斷, 對於增添用戶等一些之後的擴展有點麻煩

2. 代碼有些冗余, 對各個年級都有一個結構體, 並且每個年級都有一個初始化函數, 主函數中也存在三個類似的生成試卷的模塊, 可將相同處提煉出來精簡代碼

但是總體來說我隊友還是特別厲害特別優秀特別棒的 就這樣 Over

結對編程隊友代碼分析