zoukankan      html  css  js  c++  java
  • 软件工程—团队作业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分

  • 相关阅读:
    SD_WebImage-03-多线程+下载任务放入非主线程执行
    NSOperationQueue_管理NSOperation-02-多线程
    CALayer小结-基本使用00-UI进阶
    XMPP-UI进阶-01
    XMPP总结-UI进阶-00
    UI控件总结-UI初级
    转场动画-01-day4
    暂停-开始动画-核心动画-08-day4
    核心动画-04-CALayer隐式动画
    Android开发技术周报 Issue#71
  • 原文地址:https://www.cnblogs.com/ysh1998/p/9194108.html
Copyright © 2011-2022 走看看