揭秘:一個(gè)月不摸魚能寫多少代碼?

猜猜寫了多少行?都寫了哪些語言呢?
時(shí)間過得真是太快了,又到月底了。對(duì)于程序員來說,總結(jié)還是挺重要的,我也一直保持著一個(gè)習(xí)慣,就是每個(gè)月末都要看一下自己這個(gè)月的代碼統(tǒng)計(jì)情況,比如寫了多少行代碼、寫了哪些語言的代碼、占比是多少等等。
接下來就帶大家看一看咯~
本月不摸魚情況
首先,代碼統(tǒng)計(jì)肯定不是我自己來做的,總不可能一行行代碼去數(shù)、再去分類吧!所以,我一般直接看公司提供的代碼提交報(bào)告,根據(jù)你每個(gè)月的代碼 git 提交數(shù),自動(dòng)統(tǒng)計(jì)生成。
比如下面這個(gè)代碼提交語言餅圖:

從餅圖中,就能看出我這個(gè)月寫了 23.58 % 的 Java、寫了 30 % 左右的前端(TypeScript + JavaScript + CSS)、寫了 12.67 % 的 Markdown、還有 30 % 左右的其他語言。
等等,Others 是其他我能理解,這個(gè) UNKNOWN 是什么鬼?!我就當(dāng)是系統(tǒng)的 Bug 了吧哈哈。

那大家是否好奇這其他語言都有什么呢?
我舉一些例子,比如 Java 和前端項(xiàng)目的一些配置和數(shù)據(jù)交換文件,比如 xml、yaml、yml、properties、conf、 json、proto 等。還有一些腳本文件,像 bash 腳本、bat 腳本、SQL 腳本等。還有一些工程化的文件,比如 gradle 項(xiàng)目管理,以及自動(dòng)構(gòu)建項(xiàng)目用到的 jenkinsfile 等。
之前有小伙伴質(zhì)疑我的工作不是全棧(啥都干),這回可以相信了吧!

不過,不是說只有全棧工程師才要寫各種語言。要做一個(gè)完整的項(xiàng)目,不可能只局限于一個(gè)編程語言本身,相關(guān)的技術(shù)棧像上面提到的配置文件、數(shù)據(jù)交換文件、腳本、工程化文件等,其實(shí)是每個(gè)程序員都應(yīng)該熟悉或了解的。只有這樣,你才能算是一名工程師,而不是靠復(fù)制粘貼度日的碼農(nóng)。
哦對(duì),好像我現(xiàn)在大部分代碼也靠復(fù)制粘貼,我擱這兒打臉放鞭炮呢?
這個(gè)月我新寫了 15.8 萬行代碼,平均每天 500 行,也不是很多。但是這個(gè)只會(huì)統(tǒng)計(jì)你最后通過提交的代碼,也就是經(jīng)過我優(yōu)化后的,所以實(shí)際上每天估計(jì)也會(huì)寫近千行代碼吧。

不過,關(guān)注代碼行數(shù)也沒太大的意義,自己看著爽就完事兒,也能側(cè)面反映出我沒怎么摸魚哈哈!
意義何在?
看自己的代碼統(tǒng)計(jì)有什么意義呢?對(duì)我來說至少有三點(diǎn):
1. 復(fù)盤
首先,幫我回顧這個(gè)月的工作和效率。
其實(shí)這半年來,大部分情況下我都是在做調(diào)研、技術(shù)選型和場(chǎng)景分析,除了這個(gè)月寫的代碼比較多之外,其他時(shí)間很少寫代碼。因此,當(dāng)我意識(shí)到代碼寫的少了時(shí),我會(huì)有意在工作之余去花更多的時(shí)間來做自己的項(xiàng)目,多寫一些代碼,不讓自己生疏。
那這個(gè)月代碼寫的比較多了,我又會(huì)警醒自己不要只沉迷于寫代碼,成為了項(xiàng)目和老板的工具人。我會(huì)在之后有意讓自己更多關(guān)注代碼之外的東西,比如業(yè)務(wù)場(chǎng)景;還會(huì)思考寫這么多代碼來實(shí)現(xiàn)這個(gè)需求是否真的有意義,能否換一種方式。
另外不知道大家是否注意,Markdown 文檔語言在我本月的代碼中占比 12 % 左右,也意味著最近我寫了不少文檔,多寫文檔對(duì)項(xiàng)目來說是很有幫助的!

2. 未來
通過分析代碼統(tǒng)計(jì),可以確定我未來的重點(diǎn)學(xué)習(xí)方向,比如有個(gè)月我在做一個(gè)用 Java 實(shí)現(xiàn)的項(xiàng)目,寫了 80 % 的 Java 代碼,那我自然會(huì)把重心放在 Java 上,在工作之余去深入看一些 Java 的東西。
3. 成就感
不要小瞧這一點(diǎn),回顧自己寫的代碼數(shù)的確能幫助你收獲成就感,就像是打怪升級(jí)一樣,看看自己上個(gè)月刷了多少只怪、爆了多少裝備,這個(gè)月才會(huì)更有動(dòng)力去沖!
當(dāng)然,代碼寫的多也不一定是好事,有些程序員老奸巨猾的,為了湊行數(shù),特么的一行代碼后面跟一個(gè)空行,一行代碼寫完的功能拆成十行來寫!沒必要沒必要。

如何統(tǒng)計(jì)?
看到這里,肯定有同學(xué)也想統(tǒng)計(jì)下自己寫的代碼行數(shù),這里簡(jiǎn)單介紹幾種方式。
1. GitHub
如果使用 GitHub 來管理你的代碼,可以進(jìn)入 insights 面板,能夠看到指定時(shí)期的提交數(shù)、文件修改數(shù)、代碼新增和刪除數(shù)。

2. 編輯器插件
很多編輯器像 WebStorm、IDEA、VSCode 等,都提供了代碼行統(tǒng)計(jì)插件,比如 JetBrains 全家桶通用的 Statistic 插件。

安裝之后,就能看到代碼中各個(gè)語言的行數(shù)、占比等信息了。

3. 工具
還有一些現(xiàn)成的代碼統(tǒng)計(jì)工具,比如 cloc 。通過命令行使用,可以直接分析本地或者 GitHub 上的代碼包。支持按語言分類統(tǒng)計(jì)代碼空行、注釋行、自然行數(shù)等,還能單獨(dú)分析指定提交。

4. 硬核命令
如果你的 git 命令耍的很溜,也可以直接寫命令來統(tǒng)計(jì)代碼,根本不需要什么工具!
不過看這狗命令就知道,這種方式過于硬核:
git log --author="_your_name_" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
5、用 Python 寫的批量翻譯工具,效果竟超越付費(fèi)軟件?
