軟件工程—團隊作業2.2
目錄
一、Python代碼規範及編碼原則
1、縮進
2、最大行長度
3、空行
4、import相關
5、字符串引號
6、表達式和語句中的空格
7、註釋
8、命名規範
9、命名約定
二、JavaScript代碼規範及編碼原則
1、命名規則
2、空格與運算符
3、代碼縮進
4、語句規則
5、對象規則
6、最大行長度
三、團隊項目主要功能流程描述
四、團隊分工及貢獻分
一、Python代碼規範及編碼原則
本項目後端開發語言為python,其代碼規範及編碼原則主要基於PythonPEP8編碼規範(PythonPEP8官方文檔鏈接:https://www.python.org/dev/peps/pep-0008/),下面介紹它的主要內容。
1、縮進
1) 每一級縮進使用4個空格。
2) 續行應該與其包裹元素對齊,要麽使用圓括號、方括號和花括號內的隱式行連接來垂直對齊,要麽使用掛行縮進對齊3。當使用掛行縮進時,應該考慮到第一行不應該有參數,以及使用縮進以區分自己是續行。
2、最大行長度
1) 所有行限制的最大字符數為79。
2) 沒有結構化限制的大塊文本(文檔字符或者註釋),每行的最大字符數限制在72。
3、空行
1) 頂層函數和類的定義,前後用兩個空行隔開。
2) 類裏的方法定義用一個空行隔開。
3) 相關的功能組可以用額外的空行(謹慎使用)隔開。一堆相關的單行代碼之間的空白行可以省略(例如,一組虛擬實現dummyimplementations)。
4) 在函數中使用空行來區分邏輯段(謹慎使用)。
5) Python接受control-L(即^L)換頁符作為空格;許多工具把這些字符當作頁面分隔符,所以你可以在文件中使用它們來分隔相關段落。請註意,一些編輯器和基於Web的代碼閱讀器可能無法識別control-L為換頁,將在其位置顯示另一個字形。
4、import相關
1) 各個import獨立成行。
2) import應該總是在文件的最上面,在模塊註釋和文檔字符串之後,在模塊變量和常量之前。
3) 註意import的順序,各個import的組需要用空行隔開,順序為:
-標準庫import
-相關的第三方import
-本地應用和庫的import
4) 推薦使用絕對路徑導入,如果導入系統沒有正確的配置(比如包裏的一個目錄在sys.path裏的路徑後),使用絕對路徑會更加可讀並且性能更好(至少能提供更好的錯誤信息)。
5) 在import一個class的時候,如果不會引起命名沖突,則可以使用from進行import,否則則直接import並且使用全名。
6) 應該避免使用利用通配符進行import,也就是避免使用fromxxximport*。
5、字符串引號
在Python中,單引號和雙引號字符串是相同的。PEP不會為這個給出建議。選擇一條規則並堅持使用下去。當一個字符串中包含單引號或者雙引號字符的時候,使用和最外層不同的符號來避免使用反斜杠,從而提高可讀性。
對於三引號字符串,總是使用雙引號字符來與PEP257中的文檔字符串約定保持一致。
6、表達式和語句中的空格
1) 以下幾種情況不要額外加空格:
- 在各種括號之中,比如spam(ham[1],{eegs:2})而不是spam(ham[1],{eggs:2})
- 在逗號分號和冒號之前。
- 但是如果冒號作為分隔符,則前後都加空格。
- 後面立即跟了一個括號,比如函數調用的函數和括號之間不應該加空格。
- 後面跟的是索引或者切片的中括號,比如a[1]而不是a[1]
- 對於賦值或者其他操作符,不要為了多個語句對齊而加很多空格,前後一個即可。
2) 其他的建議
- 一行的尾部不要有空格。
- 二元運算符前後始終都最好有一個空格。
- 在一個表達式中有不同優先級的運算符,可以添加空格以區別優先級。
- 在調用函數時作為參數的那個等號則前後不要有空格(雖然看起來像個二元運算符),比如func(a=3,b=4)而不是func(a=3,b=4)
- 帶箭頭的函數,箭頭兩端也應該和二元運算符一樣,前後有空格deffunc()->AnyStr:...
- 函數聲明的默認參數,只有在有notation的時候前後有等號,否則前後沒有等號。
- 多條語句最好不要在一行,if之後如果只有一條語句也最好不要在一行,如果有多條,則絕對不要在一行。
7、註釋
與代碼相矛盾的註釋比沒有註釋還糟,當代碼更改時,優先更新對應的註釋。
註釋應該是完整的句子。如果一個註釋是一個短語或句子,它的第一個單詞應該大寫,除非它是以小寫字母開頭的標識符(永遠不要改變標識符的大小寫!)。
如果註釋很短,結尾的句號可以省略。塊註釋一般由完整句子的一個或多個段落組成,並且每句話結束有個句號。
在句尾結束的時候應該使用兩個空格。
1) 塊註釋
塊註釋通常適用於跟隨它們的某些(或全部)代碼,並縮進到與代碼相同的級別。塊註釋的每一行開頭使用一個#和一個空格(除非塊註釋內部縮進文本)。塊註釋內部的段落通過只有一個#的空行分隔。
2) 行內註釋
有節制地使用行內註釋。行內註釋是與代碼語句同行的註釋。行內註釋和代碼至少要有兩個空格分隔。註釋由#和一個空格開始。事實上,如果狀態明顯的話,行內註釋是不必要的,反而會分散註意力。
8、命名規範
Python庫的命名規範很亂,從來沒能做到完全一致。但是目前有一些推薦的命名標準。新的模塊和包(包括第三方框架)應該用這套標準,但當一個已有庫采用了不同的風格,推薦保持內部一致性。
以下是常見的命名方式:
- b(單個小寫字母)
- B(單個大寫字母)
- lowercase小寫字母
- lower_case_with_underscores使用下劃線分隔的小寫字母
- UPPERCASE大寫字母
- UPPER_CASE_WITH_UNDERSCORES使用下劃線分隔的大寫字母
- CapitalizedWords(或者叫CapWords,或者叫CamelCase駝峰命名法——這麽命名是因為字母看上去有起伏的外觀,有時候也被稱為StudlyCaps。
- 註意:當在首字母大寫的風格中用到縮寫時,所有縮寫的字母用大寫,因此,HTTPServerError比HttpServerError好。
- mixedCase(不同於首字母大寫,第一個單詞的首字母小寫)
9、命名約定
1) 應避免的名字
永遠不要使用字母‘l’(小寫的L),‘O’(大寫的O),或者‘I’(大寫的I)作為單字符變量名。
在有些字體裏,這些字符無法和數字0和1區分,如果想用‘l’,用‘L’代替。
2) 包名和模塊名
模塊應該用簡短全小寫的名字,如果為了提升可讀性,下劃線也是可以用的。Python包名也應該使用簡短全小寫的名字,但不建議用下劃線。
當使用C或者C++編寫了一個依賴於提供高級(更面向對象)接口的Python模塊的擴展模塊,這個C/C++模塊需要一個下劃線前綴(例如:_socket)
3) 類名
類名一般使用首字母大寫的約定。
在接口被文檔化並且主要被用於調用的情況下,可以使用函數的命名風格代替。
註意,對於內置的變量命名有一個單獨的約定:大部分內置變量是單個單詞(或者兩個單詞連接在一起),首字母大寫的命名法只用於異常名或者內部的常量。
4) 異常名
因為異常一般都是類,所有類的命名方法在這裏也適用。然而,你需要在異常名後面加上“Error”後綴(如果異常確實是一個錯誤)。
5) 全局變量名
約定和函數命名規則一樣。
通過fromMimport*導入的模塊應該使用all機制去防止內部的接口對外暴露,或者使用在全局變量前加下劃線的方式(表明這些全局變量是模塊內非公有)。
6) 函數名
函數名應該小寫,如果想提高可讀性可以用下劃線分隔。
大小寫混合僅在為了兼容原來主要以大小寫混合風格的情況下使用(比如threading.py),保持向後兼容性。
7) Functionandmethodarguments函數和方法參數
始終要將self作為實例方法的的第一個參數。
始終要將cls作為類靜態方法的第一個參數。
如果函數的參數名和已有的關鍵詞沖突,在最後加單一下劃線比縮寫或隨意拼寫更好。因此class_比clss更好。(也許最好用同義詞來避免這種沖突)
8) 方法名和實例變量
遵循這樣的函數命名規則:使用下劃線分隔小寫單詞以提高可讀性。
在非共有方法和實例變量前使用單下劃線。
通過雙下劃線前綴觸發Python的命名轉換規則來避免和子類的命名沖突。
Python通過類名對這些命名進行轉換:如果類Foo有一個叫__a的成員變量,它無法通過Foo.__a訪問。(執著的用戶可以通過Foo._Foo__a訪問。)一般來說,前綴雙下劃線用來避免類中的屬性命名與子類沖突的情況。
註意:關於__names的用法存在爭論(見下文)。
9) Constants常量
常量通常定義在模塊級,通過下劃線分隔的全大寫字母命名。例如:MAX_OVERFLOW和TOTAL。
二、JavaScript代碼規範及編碼原則
1、命名規則
JavaScript中通常推薦使用駝峰法,jQuery及其他JavaScript庫都使用駝峰法。
1) 變量和函數為小駝峰法標識,即除第一個單詞之外,其他單詞首字母大寫(lowerCamelCase)
2) 全局變量為大寫(UPPERCASE)
3) 常量(如PI)為大寫(UPPERCASE)
4) -通常在JavaScript中被認為是減法,所以不允許使用。
5) 變量名不要以$作為開始標記,會與很多JavaScript庫沖突。
6) HTML與JavaScript盡量使用相同的命名規則。
7) 建議使用小寫文件名。
2、空格與運算符
通常運算符(=+-*/)前後需要添加空格。
3、代碼縮進
通常使用4個空格符號來縮進代碼塊。
4、語句規則
1) 簡單語句的通用規則:
- 一條語句通常以分號作為結束符。
2) 復雜語句的通用規則:
- 將左花括號放在第一行的結尾。
- 左花括號前添加一空格。
- 將右花括號獨立放在一行。
- 不要以分號結束一個復雜的聲明。
5、對象規則
1) 對象定義的規則:
- 將左花括號與類名放在同一行。
- 冒號與屬性值間有個空格。
- 字符串使用雙引號,數字不需要。
- 最後一個屬性-值對後面不要添加逗號。
- 將右花括號獨立放在一行,並以分號作為結束符號。
6、最大行長度
為了便於閱讀每行字符建議每行代碼字符小於80個。如果一個JavaScript語句超過了80個字符,建議在運算符或者逗號後換行。
三、團隊項目主要功能流程描述
本項目是一個簡單的問答搜索程序,搜索頁面比較簡潔,只有一個簡單的搜索框,輸入你想要搜索的問題內容,點擊搜索後程序會從各大網站搜索相關內容,返回相關回答的摘要,點擊摘要後會跳轉到相應的答案鏈接。
程序搜索的答案來自於國內三大權威問答網站:百度知道、搜搜問問和知乎,原則上可以拓展到更多的網站,搜索的內容相對的豐富全面,十分的方便快捷。
四、團隊分工及貢獻分
姓名 |
任務 |
分工比例 |
貢獻分 |
楊聖豪 |
後端python代碼規範及編碼原則 |
25% |
10分 |
覃朗 |
後端python代碼規範及編碼原則 |
25% |
10分 |
邢路 |
前端JavaScript代碼規範及編碼原則 |
25% |
10分 |
尹康傑 |
團隊項目主要功能流程描述及所有內容的整合 |
25% |
10分 |
軟件工程—團隊作業2.2