軟件工程學習筆記《二》代碼規范

文章目錄

  • 軟件工程學習筆記目錄
  • 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.pswp.cn/news/382517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382517.shtml
英文地址,請注明出處:http://en.pswp.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)