文章目录

  • 软件工程学习笔记目录
  • google代码规范
    • 节选python来自google翻译
  • 错误注释的示例
  • 命名规范
  • import语句的规范
  • import this 源码

软件工程学习笔记目录

[https://blog.csdn.net/csdn_kou/article/details/83754356]

google代码规范

https://github.com/google/styleguide

节选python来自google翻译

2.17函数和方法装饰器
当有明显的优势时,明智地使用装饰器。避免 @staticmethod和限制使用@classmethod。

2.17.1定义
函数和方法的装饰器 (又名“ @符号”)。一个常见的装饰器@property,用于将普通方法转换为动态计算的属性。但是,装饰器语法也允许用户定义的装饰器。具体来说,对于某些功能my_decorator,这个:

class C(object):
@ my_decorator
def 方法(self):
# method body …
相当于:

class C(object):
def Methodmethod(self):
# method body …
Methodmethod = MyDecoratormy_decorator(Methodmethod)

2.17.2优点
优雅地指定方法的一些转换; 转换可能会消除一些重复的代码,强制执行不变量等。

2.17.3缺点
装饰器可以对函数的参数执行任意操作或返回值,从而导致令人惊讶的隐式行为。此外,装饰器在导入时执行。装饰器代码中的失败几乎无法从中恢复。

2.17.4决定
当有明显的优势时,明智地使用装饰器。装饰器应遵循与函数相同的导入和命名准则。装饰者pydoc应该清楚地说明该函数是一个装饰器。为装饰器编写单元测试。

避免装饰器本身的外部依赖(例如,不要依赖文件,套接字,数据库连接等),因为它们在装饰器运行时可能不可用(在导入时,可能来自pydoc或其他工具)。使用有效参数调用的装饰器应该(尽可能)保证在所有情况下都成功。

装饰器是“顶级代码”的特例 - 请参阅主题以获得更多讨论。

@staticmethod除非被强制使用以便与现有库中定义的API集成,否则切勿使用。写一个模块级函数。

使用@classmethod只写了一个名为构造函数或类特定的例程,它需要修改全局状态,如进程范围的缓存时。

错误注释的示例

命名规范

import语句的规范

  • import次序:先import Python内置模块,在import第三方模块,最后import自己开发项目中的其他模块;这几种模块用空行分割开来
  • 一条import只可以import一个模块
  • 当从模块中import多个对象且超过一行时,使用如下断行方法:
    • from module import (obj1,obj2,obj3,obj4,obj5,obj6)
  • 不要使用from module import * ,除非时import常量定义模块或其它你确保不会出现命名空间冲突的模块

import this 源码

import this

python3 test.py


The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!


ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm
源代码

s = """Gur Mra bs Clguba, ol Gvz CrgrefOrnhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""d = {}
for c in (65, 97):for i in range(26):d[chr(i+c)] = chr((i+13) % 26 + c)print "".join([d.get(c, c) for c in s])

网上很多人说是恶搞,这其实是凯撒密码:
字符前移13位然后模26而已

软件工程学习笔记《二》代码规范相关推荐

  1. python学习笔记之代码规范

    前言 最近开始了Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯. 目录 一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 ...

  2. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  3. GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言

    GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...

  4. 软件工程学习笔记《目录》

    软件工程学习笔记<目录> 软件工程学习笔记<一>什么是软件工程 软件工程学习笔记<二>代码规范 软件工程学习笔记<三>代码优化和性能测试 软件工程学习笔 ...

  5. 二维码学习笔记(二) | 数据分析与数据编码

    唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...

  6. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  7. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  8. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  9. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

最新文章

  1. 临时表temporary table
  2. 上高职业技术学校计算机学几年,上高职业技术学校2021年有哪些专业
  3. QT旋转按钮控件的实现
  4. 艾伟_转载:ASP.NET MVC数据验证
  5. python 不同模块之间的引用错误问题
  6. 路由器配置——OSPF协议(2)
  7. 21天让你成为Horizon View高手—Day18:Windows操作系统优化
  8. 比较难的sql面试题,令我比较郁闷!
  9. Spring 事务初始化源码分析
  10. Cisdem PDF Password Remover for mac(PDF文件解密工具)
  11. Pycharm专业版注册教程
  12. java snmp mib库接收_SNMP MIB 功能开发详细步骤
  13. 微信小程序的点击、双击、长按事件
  14. 【C++】黑白矩阵(美团)
  15. oled u8g2如何显示中文(实测有效)
  16. linux scp 自动备份,linux Oracle 自动备份并scp
  17. 频繁用电脑打字 武汉大三女生求职提笔忘字
  18. 斯特林数 java实现_斯特林数 - BILL666 - 博客园
  19. android添加悬浮窗,在Android中使用WindowManager实现悬浮窗口
  20. 10 年老程序员教你甩锅必杀技,论【如何优雅的甩锅】

热门文章

  1. T-1-java语言基础
  2. [折半搜索][has] Jzoj P4250 路径
  3. 3.4 内置函数(1)
  4. CentOS7搭建lamp环境
  5. python2.7虚拟环境virtualenv安装及使用
  6. class threading.Thread()说明:
  7. java做的一个将中文转换成Unicode码的工具类【转载】做个标记,明天研究下
  8. 职业生涯中12个最致命的想法
  9. 可以在xml中靠增加属性来实现分组
  10. xml mysql 模糊查询_mybatis+Spring mysql的模糊查询问题