软件工程学习笔记《二》代码规范

文章目录

  • 软件工程学习笔记目录
  • 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而已

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 进程通信之FIFO

FIFO通信(first in first out) FIFO 有名管道,实现无血缘关系进程通信。 ----创建一个管道的伪文件 a.mkfifo testfifo 命令创建 b.也可以使用函数int mkfifo(const char *pathname, mode_t mode); ----内核会针对fifo文件开辟一个缓冲区&…

PyCharm和git安装教程

文章目录先到官网下载git进入setting,如黄色部分如果你用的是github那么直接setting登陆就行了如果你是gitee的话首先进入setting然后Plugins点击browse查找gitee如图所示!最后点击重启ok《不要自己关闭,否则安装失败》安装好了以后,输入你的…

linux 进程通信子mmap

mmap 文件–内存映射 函数原型 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);参数介绍&#xff1a; add 传 NULL length 映射区的长度 protPROT_READ 可读PROT_WRITE可写 flagsMAP_SHARED 共享的&#xff0c…

malloc和calloc的区别

是否对申请的区域进行初始化而已 但是我想你也知道我们写程序的时候多用malloc而很少用calloc&#xff0c;何解&#xff1f; 因为calloc虽然对内存进行了初始化&#xff08;全部初始化为0&#xff09;&#xff0c;但是同样也要降低效率的 calloc相当于 p malloc(); memset(p,…

linux信号学习02

未决信号集与阻塞信号集(信号屏蔽字) 阻塞信号集&#xff1a; 将某些信号加入集合&#xff0c;对他们设置屏蔽&#xff0c;当屏蔽x信号后&#xff0c;再收到该信号&#xff0c;该信号的处理将推后(解除屏蔽后) 未决信号集&#xff1a; a. 信号产生&#xff0c;未决信号集中描述…

task_struct 结构如何查看及分析

cd /find -name sched.hvim usr/src/kernels/3.10.0862.6.3.el7.x86_64/include/linux/sched.hhttps://www.cnblogs.com/zxc2man/p/6649771.html 进程是处于执行期的程序以及它所管理的资源&#xff08;如打开的文件、挂起的信号、进程状态、地址空间等等&#xff09;的总称。…

linux 与信号集操作相关的函数

与信号集操作相关的函数 #include <signal.h> 清空信号集 全都为0 int sigemptyset(sigset_t *set);填充信号集 全都为1 int sigfillset(sigset_t *set);添加某个信号到信号集 int sigaddset(sigset_t *set, int signum);从集合中删除某个信号 int sigdelset(sigset_t *s…

软件工程学习笔记《三》代码优化和性能测试

文章目录软件工程学习笔记目录如何在开源社区提问&#xff1f;代码审查代码优化运行结果参数解释代码优化原则对常见的数据结构排序算法进行测试关于冒泡排序优化的探讨结果软件工程学习笔记目录 [https://blog.csdn.net/csdn_kou/article/details/83754356] 如何在开源社区提…

linux信号捕捉

信号捕捉&#xff0c;防止进程意外死亡 signal函数 man signal #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);参数介绍&#xff1b; signum 要捕捉的信号 handler 要执行的捕捉函数指针&#xff0c…

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

软件工程学习笔记《目录》 软件工程学习笔记《一》什么是软件工程 软件工程学习笔记《二》代码规范 软件工程学习笔记《三》代码优化和性能测试 软件工程学习笔记《四》需求分析

linux进程利用SIGCHLD信号,来实现父进程回收子进程

子进程执行完毕后&#xff0c;会向父进程发出 SIGCHLD信号 &#xff0c; 这段代码实现的就是i&#xff0c;父进程接受到子进程 发出的SIGCHLD信号&#xff0c;实现对子进程进行回收&#xff0c;从而避免僵尸进程 #include <stdio.h> #include <unistd.h> #include…

WWW软件全球使用排名

https://w3techs.com/technologies/overview/web_server/all Apache份额一直下降呀&#xff01;

软件工程学习笔记《四》需求分析

文章目录软件工程学习笔记《目录》需求工程师当代的需求工程师需要具备的能力当代的需求工程师需要努力的方向当代的需求工程师需要注意的错误需求的定义需求目标需求分析的实质需求分析的关键应该涵盖的内容&#xff1f;需求规约&#xff08;作为较客观的参照&#xff09;单个…

linux守护进程

先了解 linux系统中 会话的概念 会话是进程组的更高一级&#xff0c;多个进程组对应一个会话。 会话是一个或多个进程组的集合 创建一个会话需要注意以下5点事项&#xff1a; a. 调用进程不能是进程组组长&#xff0c; 该进程变成新会话首进程&#xff08;session header&#…

python3爬虫学习笔记

文章目录python3的文本处理jieba库的使用统计hamlet.txt文本中高频词的个数统计三国演义任务高频次数爬虫爬取百度首页爬取京东某手机页面BeautifulSoup使用request进行爬取&#xff0c;在使用 BeautifulSoup进行处理&#xff01;拥有一个更好的排版BeautifulSoup爬取百度首页原…

linux 线程学习初步01

线程的概念 进程与线程内核实现 通过函数clone实现的 ps -Lf pidLinux内核线程实现原理 同一个进程下的线程&#xff0c;共享该进程的内存区&#xff0c; 但是只有stack区域不共享。 线程共享资源 a.文件描述符表 b.每种信号的处理方式 c.当前工作目录 d.用户id和组id 线程…

python3字符串处理,高效切片

高级技巧&#xff1a;切片&#xff0c;迭代&#xff0c;列表&#xff0c;生成器 切片 L [Hello, World, !]print("-------1.一个一个取-------") print(L[0]) print(L[1]) print(L[2])print("-------2.开辟一个新列表把内容存进去-------") r [] for i…

linux线程学习初步02

杀死线程的函数 int pthread_cancel(pthread_t thread); 参数介绍&#xff1a;需要输入的tid 返回值&#xff1a;识别返回 errno成功返回 0 被杀死的线程&#xff0c;退出状态值为一个 #define PTHREAD_CANCELED((void *)-1)代码案例&#xff1a; #include <stdio.h> #…

python的文件基本操作和文件指针

读写模式的基本操作 https://www.cnblogs.com/c-x-m/articles/7756498.html r,w,a r只读模式【默认模式&#xff0c;文件必须存在&#xff0c;不存在则抛出异常】w只写模式【不可读&#xff1b;不存在则创建&#xff1b;存在则清空内容】a之追加写模式【不可读&#xff1b;不…

python3 将unicode转中文

decrypted_str.encode(utf-8).decode(unicode_escape)