1. 程式人生 > >軟件工程—團隊作業2.2

軟件工程—團隊作業2.2

eps 允許 編輯 HA 性能 雙引號 問答 註釋 AS

目錄

一、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