Chromium OS Autotest 编码风格

语言

  • 尽可能使用python
  • 在host命令的调用中会使用少量的shell命令
  • 一些测试会在测试的依赖项中使用C/C++

缩进和空行

保证你的代码在80个字符的屏幕宽度内。
缩进是4个空格,这是python的标准。函数参数另起一行并使用8个空格的缩进:

#标准写法,参数另起一行,并且使用8空格的缩进
return 'class: %s, host: %s, args = %s' % (self.__class__.__name__, self.hostname, self.args)return 'class: %s, host: %s, args = %s' % (self.__class__.__name__,self.hostname,self.args)#这是不标准的写法,不要在函数的参数上使用 4个空格的缩进
return 'class: %s, host: %s, args = %s' % (self.__class__.__name__, self.hostname, self.args)#不标准的写法,需要将函数的参数另起一行
return 'class: %s, host: %s, args = %s' % (self.__class__.__name__,self.hostname, self.args)

不要再空行键入写空格或TAB

命名原则

  • 尽可能使用具有描述性的单词命名
  • 变量的命名:variable_names_like_this
  • 方法或者函数的命名:method_and_function_names_like_this
  • 类的命名:UpperCamelCase

导入模块

导入模块的顺序如下:

  • 标准的python模块
  • 非标准python模块
  • Autotest模块

在上述三种模块的导入中,所有使用了from关键字导入的模块都应该出现在没有使用from关键字导入的模块之后。
每个模块的导入另起一行,金陵不要使用通配符导入,如:from x import *

  • 不要导入类,应该导入模块,例如:
from common_lib import errordef foo():raise error.AutoservError(...)

而不要:

from common_lib.error import AutoservError

正确的导入示例:

import os
import pickle
import random
import re
import select
import shutil
import signal
import subprocessimport common   # Magic autotest_lib module and sys.path setup code.
import MySQLdb  # After common so that we check our site-packages first.from common_lib import error

使用None

使用is None代替== None,使用is no None代替!= None。这样你就不会因为一些__eq__或者__ne__的方法调用出现错误的情况。

注释

尽可能的清晰明了地书写注释。

Hardcoded 字符串格式

字符串的书写影噶i使用单引号,当子楚川本身含有单引号时,则使用双引号,多行字符串不应该使用双引号,应该使用单引号分行,
并用括号括起来:

REALLY_LONG_STRING = ('This is supposed to be a really long string that is ''over 80 characters and does not use a slash to ''continue.')

文档描述的字符串格式

文档字符串用于代码的功能记录,虽然没有必要过度记录文档,但需要记录重要功能。在创建文档字符串时,需要再三个单引号开头
添加换行符,并在结尾处添加另一个换行符。如果字符串有多行,请在继续描述其余部分之前包括一个简短的摘要行,后面跟一个空行。
请相应地对句子进行大写和标点处理。如果描述有多行,则在继续处理文本之前放置两级缩进。一个示例:

def foo(param1, param2):"""Summary line.Long description of method foo.@param param1: A thing called param1 that is used for a bunch of stuffthat has methods bar() and baz() which raise SpamError ifsomething goes awry.@returns a list of integers describing changes in a source tree@raises exception that could be raised if a certain condition occurs."""

可以在文档字符串中根据需要定义多个标签:

Tag Description
@author Code author
@param Parameter description
@raise If the function can throw an exception, this tag documents the possible exception types.
@raises Same as @raise.
@return Return value description
@returns Same as @return
@see Reference to other parts of the codebase.
@warning Call attention to potential problems with the code
@var Documentation for a variable or enum value (either global or as a member of a class)
@version Version string

编写简洁的代码

尽量使你的代码可读性更高,更加简洁。

函数长度

保证函数简洁,尽可能控制在30行以内。

Chromium OS Autotest 编码风格相关推荐

  1. Python 编码风格参考

    2019独角兽企业重金招聘Python工程师标准>>> 代码除了用来运行外,更多的是用来读.为了是代码的可读性更强,很多编程语言都有自己的编码规范.规范的制定是为了保持代码的一致性, ...

  2. 【实用篇】Python 编码风格与规范

    前言: 为了让不同编码习惯的开发者更好的协作配合,并且形成良好的基础编码规范与风格,我们以 PEP8 为基础,修改了陈旧的规则,丰富了示例,并整理了工作中常见的不规范操作,最终形成此 Python 编 ...

  3. 来自 Google 的 R 语言编码风格指南

    来自 Google 的 R 语言编码风格指南 R 语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读.分享和检查. 以下规则系与 Google ...

  4. Windows:安装Chrome OS/Chromium OS/CloudReady 到虚拟机VMware/VirtualBox

    很早之前就听说了ChromeBook,以及ChromeBook上搭载的Chrome OS系统,一直没机会去操作.今天碰巧看到了一篇讲 FydeOS .于是就想在自己的电脑上装Chrome OS,体验一 ...

  5. 在vscode中统一vue编码风格的方法

    vetur 很多人知道,但在 vscode 下没办法格式化 .vue 里的 html, js 很是头疼,代码风格无法统一. 所以不少人直接拆分开,然后在 .vue 中引入,虽然方法很好,但这有违 .v ...

  6. 「PSR 规范」PSR-2 编码风格规范

    所有 PSR 规范请见:https://learnku.com/docs/psr https://learnku.com/laravel/t/2079/psr-specification-psr-2- ...

  7. JavaScript编码风格指南

    首次发表在个人博客 前言 程序语言的编码风格指南对于一个长期维护的软件而言是非常重要的;好的编程风格有助于写出质量更高.错误更少.更易于 维护的程序. 团队合作需要制定一些代码规范还有利用一些工具来强 ...

  8. 大名鼎鼎的Requests库用了什么编码风格?

    原文:https://www.kennethreitz.org/essays/kenneth-reitzs-code-style 作者:Kenneth Reitz 原题:Kenneth Reitz's ...

  9. 【PHP开发规范】继承与扩展:PSR-2 编码风格规范

    之前的一篇文章是对PSR-1的基本介绍 接下来是PSR-2 编码风格规范,它是 PSR-1 基本代码规范的继承与扩展. PSR-1 和PSR-2是PHP开发中基本的编码规范,大家其实都可以参考学习下, ...

最新文章

  1. ORB_SLAM2代码阅读(5)——Bundle Adjustment
  2. pandas 调整显示的行数列数
  3. SAP支持包、插件程序和附件
  4. 第三次作业-结对编程
  5. Oracle_Rac_BackgroudProcess
  6. ios 百度地图指定区域_获取百度地图可视区域范围的数据
  7. linux编辑java文本,linux下的文本编辑器VI的使用命令
  8. 吴恩达深度学习CNN作业:Convolutional Neural Networks: Step by Step
  9. 致敬那些用键盘改变世界的劳动者
  10. android开根号,定点数开根号的性能问题
  11. xgboost的原理没你想像的那么难
  12. 视频教程-通俗易懂的JavaScript高级教程(含资料)-JavaScript
  13. 软件_可用rtmp直播地址20200517
  14. 如何在excel中单独冻结多行或多列
  15. namecheap关闭域名自动续费的方法步骤
  16. 网卡statis数据内核过程分析
  17. 彬彬说,真正的喜欢一个人就会用心的去揣摩她,去知道她喜欢什么,什么性格...
  18. 全自动采集小说模板源码+送7条可用7大采集规则
  19. 推荐系统经典算法之协同过滤
  20. phpstudy运行时显示3306端口被占用

热门文章

  1. 历史演变有助于理解css布局的本质
  2. jdk 配置以及配置出错could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg' 解决方案
  3. 自己动手写个病毒专杀工具
  4. Android开发工程师学习指南
  5. idea :不支持发行版本11问题
  6. 革命性新疗法后 第三例艾滋病治愈病例可能出现了!
  7. 南京邮电大学2013年硕士研究生招生复试及同等学力加试参考书目
  8. android商务app视频,电子商务设计视频
  9. 关于 SCI、SSCI、CSSCI 北大核心,南大核心 等期刊介绍
  10. 瑞雷波频散曲线_瑞雷波频散曲线的分模态提取与联合反演