目录

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