WordCount结对项目
合作者:201631062124,201631062423
代碼地址:https://gitee.com/yryx/WordCount
作業地址:https://edu.cnblogs.com/campus/xnsy/2018Systemanalysisanddesign/homework/2188
代碼互審:
關于代碼互審有一點需要說明,在之前實現wordcount的基本功能時我使用的是c++語言實現,而周欣則是使用的是java語言實現,所以在進行結對項目的時候我們商量了關于使用那種語言實現接下來的功能,最后我們確定使用java語言進行接下來的功能實現,所以在后面的實現過程中周欣主要負責實現代碼,我則是在一旁進行相關的幫助,包括代碼問題的解決,功能實現問題的解決以及代碼測試。不過在開始擴展功能的實現之前我們還是對周欣之前實現的基本功能的代碼進行了簡單的審查。
| 代碼審查 | 相關問題 | 想法和解決方案 |
| 代碼的編碼格式,語法,邏輯等相關部分 | 編碼格式是否符合規范,語法是否正確,代碼邏輯是否正確, | 根據代碼規范來檢查完成的所有代碼是否存在問題 |
| 程序的整體結構,包括類之間的關系 | 類的定義是否符合規范,整體結構是否緊湊完整 | 在進行類的定義之前先參考代碼規范和程序流程圖 |
| 文件處理部分的處理 | 由于文件的訪問存在資源的使用,是否有資源泄漏的問題 | 對所有涉及了文件訪問的地方重點檢查資源的開閉,是否有資源泄漏的問題 |
結對psp表格:
| PSP階段 | 預計耗時(分鐘) | 實際耗時(分鐘) |
| 計劃 | 10 | 10 |
| .估計任務所需時間 | 10 | 10 |
| 開發 | ?475 | 553 |
| .需求分析 | 5 | 5 |
| .生成設計文檔 | ?10 | ?17 |
| .設計復審 | ?10 | ?14 |
| .代碼規范 | ?30 | ?46 |
| .具體設計 | ?60 | ?42 |
| .具體編碼 | ?180 | ?248 |
| .代碼復審 | ?90 | ?66 |
| .測試 | ?90 | ?115 |
| 報告 | ?50 | ?59 |
| .測試報告 | ?10 | ?13 |
| .計算工作量 | ?10 | ?10 |
| .事后總結 | ?30 | ?36 |
| 合計 | ?535 | ?622 |
設計過程:
整個程序一共設計了三個類,分別為test,FileChooser,Execute-Char,其中test類作為主函數所在類,負責整個程序的啟動和運行,其中的邏輯負責分析輸入的命令,然后再根據命令調用另外兩個類中的方法實現對應的功能。FileChooser類中定義了三個方法:rePath(),用于返回輸入的文件路徑;FileChooser()為該類的構造方法,用于繪制進行文件選擇的窗口;actionPerformed(ActionEvent e),用于進行文件的選擇。該類的作用就是繪制一個窗口實現文件的選擇,然后給出查詢結果。Execute-Char類就是所有功能實現的類,其中定義了9個方法,實現了查詢總字符數,總單詞數,總行數,某個單詞出現次數,讀取文件,讀取總的空行,代碼行和注釋行,停詞表。這些具體的實現方法會在test類中得到調用,從而實現相應功能。
代碼說明:
? FileChooser類中實現文件選擇的代碼:
//定義一個文件選擇類,用于實現窗口文件選擇 public class FileChooser extends JFrame implements ActionListener{ JButton open=null; String path;//繪制文件選擇框public FileChooser(){ open=new JButton("open"); this.add(open); this.setBounds(400, 200, 100, 100); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); open.addActionListener(this); } @Override //重寫actionPerformed()方法,用于實現文件選擇public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JFileChooser jfc=new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES ); jfc.showDialog(new JLabel(), "選擇"); File file=jfc.getSelectedFile(); path=file.getAbsolutePath(); }//返回文件路徑public String rePath(){return path;}}?查詢代碼行,空行,注釋行:
try {BufferedReader bufferedReader = new BufferedReader(new FileReader(file));String coun = null;while ((coun = bufferedReader.readLine()) != null) {line++;if (coun.trim().length() == 0 || coun.trim().length() == 1) {nuline++;} else {for (int i = 0; i < coun.length() - 2; i++) {temp = coun.substring(i, i + 1);if (temp.equals("/")&& coun.substring(i + 1, i + 2).equals("/")) {annoline++;}}}}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}codeline = line - nuline - annoline;System.out.println("代碼行:" + codeline + "\n" + "空行:" + nuline + "\n"+ "注釋行:" + annoline);?停詞表:
int ReStopList(File file) {String str = null;int stopword = 0;int k = 0;String reg1 = "\\s+|,+";try {BufferedReader bufferedReader = new BufferedReader(new FileReader(file));while ((str = bufferedReader.readLine()) != null) {String strc[] = str.split(reg1);for (String s : strc) {k = count_word(s);stopword += k;}}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}return stopword;}?由于在上一次的博客中已經實現了查詢總字符數,單詞數,總行數,所以在這里就不再展示代碼,具體的可以參考:https://www.cnblogs.com/zhouxin523/p/9733271.html。
總結與感受:
關于結對編程開發:以前進行程序開發的時候要么是自己進行程序開發,要么都是組成了多人的團隊進行程序開發,從來沒有體會過兩人進行結對編程,在這次課程中得以體會了一次結對編程,首先來說結對編程有一點好處就是多了一雙眼看代碼,多了一個腦子想問題,多了張嘴講建議,所以在進行編程的時候可以注意到許多一個人進行編程時發現不了的問題,并且兩個人都在對一個問題進行思考,使得解決問題的思路得到了更多的拓展,并且在交流的過程中還會產生新的想法, 我覺得這是很棒的。其次,在代碼完成速度上感覺也有了明顯的不同,在進行編程之前如果進行了明確分工,在合理的代碼規范前提下兩人分工完成各自的任務,使得完成的時間得到了很大程度的減少,并且代碼完成的質量在合成一份程序之后就可以得到驗證,而不必反復在編程的各個階段進行代碼測試,減少了很多時間的浪費。
關于在構建之法的一些體會:在構建之法這本書中我感覺自己確實是學到了很多知識,首先是系統的軟件工程的知識,在接觸這本書之前雖然已經學習了不少軟件工程的相關知識,但是一種感覺都是零散的,獨立的知識片段,但是在學習了構建之法后感覺這些知識都到了一定程度的整合,慢慢開始形成一個整體,并且感覺腦子里的思路也清晰起來。然后構建之法中在每一章的結尾都給出了大量的知識鏈接,這些知識鏈接可以豐富我的閱讀,拓寬視野,并且加深我自己對于課堂知識的理解,? 對于我來說是起到了極大的幫助的,我相信就算在這門課結束之后我還是會經常把這本書拿出來閱讀,感覺還可以收獲更多的東西。
轉載于:https://www.cnblogs.com/lonely-z/p/9801089.html
總結
以上是生活随笔為你收集整理的WordCount结对项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 译:Spring Boot 自动伸缩
- 下一篇: 2018.10.17考试