天天看點

實驗二 結對程式設計第二階段

實驗二   結對程式設計第二階段

一、實驗目标

  1)體驗靈活開發中的兩人合作。

  2)進一步提高個人程式設計技巧與實踐。

二 、實驗内容

  1)根據以下問題描述,練習結對程式設計(pair programming)實踐;

  2)要求學生兩人一組,***組合。每組使用一台計算機,二人共同編碼,完成實驗要求。

  3)要求在結對程式設計工作期間,兩人的角色至少切換 4 次;

  4)程式設計語言不限,版本不限。建議使用 Python 或 JAVA 進行程式設計。

三、實驗過程

1、代碼規範

 1)代碼編排

     a.縮進。4個空格的縮進(編輯器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。

     b.每行最大長度79,換行可以使用反斜杠,最好使用圓括号。換行點要在操作符的後邊敲回車。

     c.如無特殊情況,檔案一律使用UTF-8編碼。

  2)文檔編排

     a.子產品内容的順序:子產品說明和docstring—import—globals&constants—其他定義。

  其中import部分,又按标準、三方和自己編寫順序依次排放,每組之間空一行。

     b.不要在一句import中多個庫。   

  3)空格的使用方法(總體原則:避免不必要的空格)

      a.逗号、冒号、分号前不要加空格。

      b.操作符左右各加一個空格,不要為了對齊增加空格。

      c.不要将多句語句寫在同一行,盡管使用‘;’也不允許。   

   4)注釋(總體原則:錯誤的注釋不如沒有注釋)

    a.塊注釋,在一段代碼前增加的注釋。在‘#’後加一空格。段落之間以隻有‘#’的行間隔。

    b.行注釋,在一句代碼後加注釋。

    c. 至少使用兩個空格和語句分開,避免無謂的注釋。 

    5)命名的規範(總體原則:新編的代碼必須按下面命名風格進行,現有庫的編碼盡量保持風格)

      a.盡量單獨使用小寫字母‘l’,大寫字母‘O’等容易混淆的字母。

      b.函數命名使用全部小寫的方式,可以使用下劃線; 常量命名使用全部大寫的方式,可以使用下劃線。

      c. 類名使用駝峰命名風格,首字母大寫,私有類可用一個下劃線開頭。

2、程式的總體設計

實驗二 結對程式設計第二階段

 3、程式結對程式設計過程及功能實作情況

      1)首先我和葉子讨論了Python代碼的規範,好久沒有學習Python了,真的好多都忘記了,一些文法也忘的差不多,是以我們兩個就百度了一下,然後進行讨論分析,整理,得到了如上的代碼規範,覺得每個語言都有它的特殊性和複雜性,這就需要我們在程式設計的時候多多注意了。(我們的每次讨論都是通過QQ螢幕分享的)

實驗二 結對程式設計第二階段

      2)結對程式設計第一階段的時候,葉子百度了一篇生命遊戲代碼,我們兩覺得這代碼還挺好的,然後就借鑒了那篇代碼,之後,我們各自先研究研究代碼。

      3)當我想要運作那篇代碼時,出現了許多錯誤,首先是numpy和matplotlib子產品缺少,我就百度如何添加這兩個子產品,發現需要安裝與Python相比對的numpy版本,之後在這裡卡住了(因為我百度了,也不知道哪個版本是适合的版本),我就告訴了葉子,葉子說她也花了好長時間安裝numpy子產品,結果安裝上了,還是不能運作成功,最後她找到了一篇文章,pycharm可以自己安裝numpy子產品,不用去下載下傳,我們也是花了好長時間在安裝子產品上面。總結下來,還是我們對pycharm軟體不熟,不知道它有什麼功能,有什麼東西,以後還得多用用,才能發現新的東西。(不過pycharm真的挺好用的)

實驗二 結對程式設計第二階段

      4)接下來幾天,我們對代碼進行讨論、修改和優化更新。

           首先,我們對生命遊戲程式總體進行了設計:先輸入地圖的面積大小,然後對細胞生命狀态進行初始化,确定地圖變化的間隔時間,然後計算周圍8個細胞的生命狀态,來确定下一次的生命狀态....接着我們對遊戲進行了子產品劃分,分為:細胞生命狀态初始化子產品、遊戲規則子產品、動畫子產品、主函數子產品。我們對這些子產品進行了分工合作。

          a.我負責細胞生命狀态初始化子產品和動畫子產品的程式設計,葉子負責領航,在程式設計過程中,有好多代碼的文法忘了,幸虧有了葉子在邊上的提醒,我才完成了這些子產品,但是在fetch遠端倉庫的時候,明明之前這些指令弄了好幾遍,當時都很熟,但是在這次,我忘了一些,記得merge,但是忘了建立分支,記得建立分支,但是忘了merge,我這個腦子真的不好用,導緻修改一次檔案并送出花了很長的時間,還是多得練練。

實驗二 結對程式設計第二階段
實驗二 結對程式設計第二階段
實驗二 結對程式設計第二階段

   b.葉子負責主函數子產品、遊戲規則子產品以及接收動圖的長度值的程式設計,我來負責領航,這樣分工合作很互補,也會讓程序快很多。

實驗二 結對程式設計第二階段
實驗二 結對程式設計第二階段

   c.當所有子產品弄好的時候,發現出來的圖不能動,我們兩個也很困惑,它為啥不動了,葉子覺得那個間隔時間部分有問題,然後她對其進行修改,發現沒有問題,最後百度了pycharm有個預設設定,将這個設定不勾選的狀态,運作出來的圖就可以動了。

實驗二 結對程式設計第二階段
實驗二 結對程式設計第二階段

   d.最後我們對代碼進行了更新優化,把一些備援的代碼給删除,複雜的轉換成簡單。

        e.功能實作結果

實驗二 結對程式設計第二階段

        f.push和merge過程

實驗二 結對程式設計第二階段

  4.項目github位址

實驗二 結對程式設計第二階段

四、實驗小結

 1、俗話說,“衆人拾柴火焰高",雖然結對程式設計隻有兩個人,但我感覺我們兩個“女女搭配,幹活不累,還事半功倍“,說實話,兩個人合作真的挺好的,因為一個人想不到那麼的全面,而且兩個人輪換身份,加快了實驗進度,提高了代碼的品質,最後保證明驗成功完成。

 2、這次實驗很感謝葉子,主要我在實驗的過程中,有些東西弄不出來,加上家裡事情有點多,心情有點煩,幸虧了有了葉子,她鼓勵我,幫助我。

 3、通過這次實驗,我也發現了自己有許多缺點,不僅是自己專業知識上的漏洞,還有自己容易被情緒困擾,容易被情緒帶着走,就是心情不好的時候,啥也不想幹,之後我會努力克服這個問題,加油,未來是美好的。

實驗二 結對程式設計第二階段