一、理論學習
1、學習慕課《軟件工程》第三章“單元測試”、第四章“軟件開發過程”。
2、閱讀《構建之法》中的“個人開發技術”。
3、熟悉Google給出的python語言代碼規范。
python語言代碼規范學習鏈接:https://www.runoob.com/w3cnote/google-python-styleguide.html https://www.python.org/dev/peps/pep-0008/
4、學習體會:
(1)“個人開發技術”一章講解了程序效能的分析以及如何進行單元測試,以Java、C++等為例子進行了簡單分析,通過學習,掌握了單元測試的一些基本概念,但在看這些例子的時候,由於對C類、Java等程序語言的陌生,具體的代碼看不太懂,后來學習了慕課里面有關這方面的視頻,還是慕課聽起來更加容易懂,而且舉的例子基本上是python的,大部分情況都能明白。
(2)python代碼規范里面的內容,比如其中的行長度、括號使用、縮進、空行、注釋、函數等內容的編寫規范基本能夠明白,在使用過程中大部分情況能夠按照規范編寫,但也難以避免的出現不符合規范的情況。此外,有關類這一塊的一些規范還迷迷糊糊,不太懂,尤其是類屬性、self等的使用還沒弄明白。
二、實踐學習
1、完成慕課第二章編程練習。
題目:請用python3編寫程序,它可以實現對一個大容量英文文獻進行分詞與分句,並且能夠對該文獻內容的全文單詞位置進行檢索。更具體地,對於一個含有以分隔符(逗號“,”、空格“ ”、分號“;”、英文句號“.”等非英文字母)分隔開的若干單詞的文本文獻(其中單詞可能重復),程序要讀入和存儲整個文本,並根據輸入的若干個單詞進行查詢,返回每個單詞出現的所有句子以及是句子中第幾個單詞。
編程思路:
(1)每次讀入一行文件,用正則表達式分離后,存入列表;
(2)判斷列表中是否有句號、問號、感嘆號,有的話則從該句子中找出要查找的單詞的位置,然后將這句話從列表中移除,列表中剩下的單詞保持不變,然后讀入下一行數據並放入列表中,如此循環至文件最后一行。
編寫結果見 https://github.com/lxxlccly/rjgc2 下的mktest2.py文件。首先,將需要查找的文件document.txt的內容設為:
將需要查找的單詞文件query.txt的內容設為:
得到的運行結果如下:
此外,編寫了兩個.bat文件進行push和pull,雙擊即可提交/拉取,代碼如下:
在pycharm中也進行了github賬號配置,配置好之后點擊下圖中的√:
就會彈出如下界面,勾選需要提交的文件,點擊commit提交即可,最后進行push。
2、在pycharm中進行代碼規范檢查和性能測試。
(1)代碼規范性檢查
首先用pip install pylint安裝了代碼規范性檢查工具,然后參考 https://blog.csdn.net/suzyu12345/article/details/80323067 在pycharm中進行了pylint相關配置,最后采用pylint對mktest2.py進行了代碼規范性檢查,結果如下,存在很多不合理的地方。
然后對檢測出來的每一項進行了修正,最終消除了上面提示的不規范的代碼,結果如下:
(2)性能測試
見 https://github.com/lxxlccly/rjgc2 下的mktest2_performance_test.py文件。利用profile.run()函數對代碼進行了性能測試,結果如下:
可以看到lower()函數占用了很多時間,然后就想着從這個地方對代碼進行優化。下圖倒數第五行為lower函數使用的位置,可見其處於循環中,通過分析得到word1是需要查找的單詞,word1.lower()使用的次數等於循環次數,若將其放在循環外,word1.lower()就只需要使用一次。
於是就將word1.lower()調整至了下圖倒數第三行所在位置word.lower(),只需要使用一次。
調整后可以看到lower()的使用次數和運行時間都大大降低,如下圖所示。
以上程序都是一次查找一個單詞,每次都要重新讀取文件,於是對程序進行了修改,可以同時查找多個單詞,大大提高了效率。修改后的程序見 https://github.com/lxxlccly/rjgc2 下的mktest2_optimization.py文件。
三、學習記錄
學習時段 | 學習內容 | 收獲及存在的問題 |
2020.2.25 15:00-17:30 |
講義“個人開發技術”章節 | 掌握了單元測試的基本內容 |
2020.2.26 13:00-17:30 |
慕課《軟件工程》第三章、第四章 | |
2020.2.26 19:00-21:30 |
python代碼編寫規范 | 編寫代碼時仍存在很多不規范的地方,同時,剛接觸編程,程序結構、算法、編程思想還有待改善 |
2020.2.27 13:00-18:00 |
慕課第二章作業編寫查找單詞程序 | |
2020.2.28 8:00-11:30 |
練習代碼規范性檢查及性能測試 | |
2020.3.1 10:00-11:00 |
對慕課第二章作業編寫查找單詞程序進行優化 |