成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python項目可以有多大

開發 后端
我選擇了 Python 社區中比較知名的一些項目來分析,主要是來自 Github ,也有個別來自其他倉庫。這個選擇可能包含了一定的主觀因素在內,不過我相信大多數項目還是非常有代表性的。

總是看到有人說,動態一時爽,重構火葬場。然而這世界上有的是著名的開源項目, 也有像 Github、Instagram 這樣流量巨大的知名網站是基于動態語言開發的,經過了這么多年重構,也未聽說哪個作者進了火葬場的,不明白這些人是真的不知道還是裝作看不見呢?不過他們說動態語言大到一定程度就無法維護,雖然這話也同樣不值一駁,不過也提醒了我,我也很好奇用動態語言開發的項目規模能大到什么程度。

從我知道的信息看,用動態語言開發的***規模的項目可能要算是 OpenStack ,據說代碼總量已經達到數百萬行,并且還在持續增加中。這當然是一個說明動態語言能力的好例子。不過像這樣巨大的項目,要分析起來也并不容易(好吧,真正的原因是我懶得下載那么龐大的代碼庫)。我選擇了 Python 社區中比較知名的一些項目來分析,主要是來自 Github ,也有個別來自其他倉庫。這個選擇可能包含了一定的主觀因素在內,不過我相信大多數項目還是非常有代表性的。

計算代碼數量的工具是 cloc 。所有項目均選擇截止到 2018 年 1 月 3 日的主干代碼,統計中僅包含 Python 文件,排除了其他文件類型。值得說明的一點是, 通過 Ubuntu APT 默認安裝的 cloc 版本 1.60 在統計部分項目的時候存在問題,該問題在***的版本中已經得到解決,因此本文中所有統計均使用從官網下載的 cloc v1.72。

 

Python項目可以有多大Python項目可以有多大

上表已經按代碼行數排了序。有意思的一點是, 代碼規模***的前4名中除了 CPython 之外其他三個全部是運維性質的項目,本來我猜測代碼應該比較多的項目比如 Odoo 排名反而很靠后。我對運維項目了解有限,不太清楚為什么這些項目的代碼規模會名列前茅,或許是因為要支持的內容比較多而雜?

Python項目可以有多大

本次統計中純 Python 代碼量***的 Sentry 幾乎達到了 70W 行,這是相當有規模的項目了。30W~50W 行代碼的項目有三個,包括基礎項目 CPython 在內。20W 和 10W 行代碼規模的分別有三個,剩下 7 個則在 10W 行以內。看過這個列表你應當相信,動態語言至少在幾十W行代碼的項目上是完全沒有問題的。這也是絕大多數普通應用的上限了,如果代碼真的達到數百萬行規模的話,那么無論用什么語言,都勢必面臨著拆分項目的問題。

上表將代碼量指標按照代碼/空白/注釋進行了分類,也在一定程度上反應了項目的代碼風格。Sentry 是本次統計中代碼量最多的項目,然而從表中可以看到,項目中的注釋和其他項目相比,少得有點不成比例,說明 Sentry 的作者非常不注重注釋。

同學們一定發現了,我在列表中除了代碼行相關的指標之外還增加了幾個其他內容,這也是我個人比較感興趣的方面。

Python項目可以有多大

***個指標是每個文件的平均代碼行數。按照模塊化的觀點,單個文件中堆砌太多內容顯然是不合理的,這通常意味著耦合太多、難于理解和修改。然而到底多少算是合適,并沒有一個明確的標準。我希望通過這些項目的分析,了解一下開源作者們在實踐中做出的選擇。

統計的結果分布比較平均,從 100~600行/文件的都存在,并不存在明顯的集中點。有趣的是,頭兩名(Pandas, NumPy)有著緊密的聯系,都是和數學統計相關的。這可能是因為數學庫的特點比較純粹而單一,不像其他類庫那樣容易劃分。末尾的項目(Pillow, youtube-dl, Odoo, Scrapy)可以從側面印證這種猜想:它們都是面向特定領域的,所以更加容易模塊化。

Python項目可以有多大

第二個指標是注釋和代碼的比例,這個問題也有著類似的情況。注釋并非越詳盡越好,但總是需要一定量的注釋來解釋 Why 的問題。注釋太少,說明項目的作者沒有給后來的維護人員留下足夠的線索,可能會造成維護上的問題。另一方面,我們考察的全部是開源項目,沒有公司考核或者 KPI 的約束,所以我們可以放心的相信不會存在作者故意多寫注釋的問題。前面提到的 Sentry 毫無爭議的因為注釋太少排到了***,這未必說明這個項目很差,但至少是一個信號,說明該項目在維護方面可能是存在問題的。而對于那些作者愿意投入精力來寫注釋的項目(Ansible, NumPy, Fabric, Salt 等),足以反映作者在項目上投入了相當大的心力,這是一個好的信號,說明這些項目是值得信賴的。

有一點是出乎我意料的,那就是作為所有項目之母的 CPython 排名比較靠后,按照道理這個基礎項目應該有更多的注釋才對。不過再想一想又覺得可以理解,因為 CPython 有單獨發布的、非常詳盡的文檔,這是其他大多數項目都沒有的,那么代碼中的注釋少一些也是情有可原的。

Python項目可以有多大

***一項統計是關于文件類型的。Python 項目中絕大多數應該是 Python 代碼,這點沒有什么疑問,但同時我也想看看除了 Python 代碼之外,一個項目還包括哪些主要文件。C/HTML/Javascipt 的上榜是毫不意外的,但有一種文件我事先沒有想到,那就是 .PO(開源項目常用的語言資源文件)。對于 Django 和 Django-CMS 這兩個項目, PO 代碼數量甚至比 Python 代碼還要多。大概看了一下,Django 支持 90 種以上的語言,這也無怪乎語言文件的數量如此之多了。這個結果也可以提醒我們,有些同學——不僅是程序員,也包括大多數經驗不足的老板、客戶、產品經理等——會下意識的認為程序開發無非是寫代碼,對于代碼之外的其他工作,在估算的時候往往只拍腦袋式的定下一個極短的時間。但對于實際的項目來說,代碼僅僅是其中的一部分,“其他工作”有時候——應該說是經常——會占用你大部分的的時間和精力。這些工作往往并不有趣,但對于項目來說又是必不可少的組成部分,希望同學們予以足夠的重視。

責任編輯:未麗燕 來源: YUHAO的博客
相關推薦

2009-07-27 14:11:22

硅谷動力

2012-08-28 09:40:13

OpenStack云操作系統

2009-06-21 13:36:12

2009-11-25 10:56:46

云端運算風險cloud compu

2017-07-17 14:52:49

慧眼SDNNFV

2024-04-30 14:39:33

2012-05-31 09:24:55

云計算云存儲

2011-05-24 09:39:38

JuniperCisco思科

2012-08-23 15:10:44

Facebook

2022-05-10 15:10:25

加密貨幣區塊鏈金融犯罪

2012-08-23 14:21:47

大數據

2023-08-21 13:31:51

ERP物聯網

2023-09-11 11:39:08

2014-06-19 10:03:28

2022-07-22 11:09:49

人工智能AIops

2015-08-17 11:46:50

2019-05-23 09:11:55

華為禁令ARM

2012-02-13 10:40:18

網絡數據中心

2021-07-26 11:02:29

鄭州暴雨河南

2012-02-16 09:49:26

信息圖移動設備丟失
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美国产一区二区三区 | 日本福利在线 | 成人精品一区二区户外勾搭野战 | 美女久久视频 | 久久亚洲综合 | 五月天婷婷综合 | 国产精品小视频在线观看 | 久久亚洲一区 | 亚洲 欧美 另类 综合 偷拍 | 欧美一区二区在线看 | 天天综合天天 | 成人三级视频 | 国产黄色在线观看 | 色视频免费 | 国产精品一二三区 | 91麻豆久久久 | 国产草草视频 | 国产亚洲精品久久yy50 | 美人の美乳で授乳プレイ | 黄视频免费观看 | 四虎影视免费观看 | 91视频日本| 91精品国产高清一区二区三区 | 久久久久国产精品人 | 久久久久久99 | 久久亚洲一区二区三区四区 | 九九色综合 | 日本黄色片免费在线观看 | 日日干综合| 久久国产电影 | 羞羞的视频网站 | 亚洲美乳中文字幕 | 国产欧美一区二区在线观看 | 成人一区二区电影 | 日韩欧美一区二区三区免费看 | 亚洲视频中文字幕 | 91免费在线看 | 国产一区二区欧美 | 国产美女在线播放 | 天天干天天操天天爽 | 日韩中文字幕在线观看 |