常見問題及解答
極客討論器是對源代碼進行批注和討論的軟件。
先說什么是批注:批注的概念來源于讀書。最著名的有金圣嘆批水滸,脂硯齋批紅樓夢,我們看書的時候也有把其中的難點,重點畫出來,用我們自己的語言解釋一遍。書需要細細品讀,源代碼也需要認真鉆研。
再說什么是討論:討論原意就是你一言我一語,針對某件事或某個人進行對話。而針對源代碼的討論更是精確到了其中的某一行,某一個語句,某一個變量上。
最后再說什么極客討論器:既然是討論器,必然有服務器或者平臺才能討論,一個人無法討論。但是因為一個人鉆研源代碼的也不少,所以也有個人用的討論器。
這個問題分兩種不同的情況來分別回答:第一種情況:源代碼是您寫的;第二種情況:源代碼不是您寫的。
有一則笑話說:程序員最恨兩件事,第一件事,寫程序要寫注釋,第二件事,看別人的程序,沒有注釋。
先說第一種情況:實話說,我們開發(fā)組都是不寫注釋的人。寫起代碼來“思緒如飛”,要停下來寫寫注釋或者文檔則感覺要被拽到地上。再實話說,如果我們真是注釋寫的清楚,文檔寫得漂亮,也不會開發(fā)這樣的軟件了。比起注釋和文檔這種由“人類”語言構成,解釋由“機器”語言組成的源代碼的別扭方式,極客討論器實際上是提供“非人類”語言來解釋源代碼的途徑。
什么是“非人類”語言?程序補丁,參數(shù),圖片,運行截圖,鏈接其它程序等等。雖說軟件名稱叫“討論器”,我們自己使用起來都不是用“人話”來討論,而是類似與:“此處為3,程序截圖”,“傳入:'中文字符串',瀏覽器截圖,程序截圖”,或者帶一個補丁將某處代碼修改為加一個for循環(huán),然后“運行時間為”等等等等。
再說第二種情況:如果您“不幸”要閱讀其他人寫的源代碼,而他的源代碼又沒有您能理解的注釋和文檔,那您就需要極客討論器批注或者和別人討論來理解代碼了。
這種情況下最典型的就是開源代碼。雖說在開源界是良莠不齊,魚龍混雜,但是確實有不少非常優(yōu)秀的代碼。身為程序員很難做到不接觸開源代碼。極客討論器能在只讀的版本庫上批注源代碼,而且有公眾平臺讓研究相同開源項目的程序員討論學習,事半功倍。
這個問題可以說是,但也不全是。
第一個問題的答案如果回答得更全面一點,應該是:極客討論器是對受版本控制的源代碼進行批注和討論的軟件。因為版本控制是如此的必不可少,所以在極客討論器內(nèi)部,集成了一個圖形化版本控制客戶端,來進行版本控制操作。但是,核心價值還是批注和討論源代碼。
后面會解釋為什么版本控制是必不可少的。
請思考一下這個問題:很多人都做過在一張合影照片上標出您好友在哪里,不難吧?那如果是一段視頻,里面的人在不停的走動呢?上一秒您的好友在視頻左上角,下一秒到了右下角,再下一秒可能走出視頻了。。。源代碼就像一段視頻,是“活”的,變化的,不是“死”的,靜止的。一個月前您批注的這個函數(shù),現(xiàn)在可能您給它改了一個名稱,加了一個參數(shù),一個月以后可能把它徹底刪掉了。。。就像不能在流沙上建樓房一樣,批注也不能在“流動的”源代碼上進行。
和視頻中標好友的例子類比,版本控制就相當于給源代碼拍了一張張照片,批注實際上是在某一張照片上標出“好友”,當源代碼改變了,成了“另一張照片”,極客討論器會和翻出批注時的源代碼“照片”,進行對比,重新定位到“好友”的最新位置上。
subversion在版本控制界的地位我們在這里無需給它打廣告了。如果說它在開源界,企業(yè)內(nèi)部,乃至個人使用的版本控制都排在前幾位,相信異議不大。當然不說它具有絕對的領先地位,比如在開源界,就大有被git后來居上的態(tài)勢。不過哪怕是github,它的每個項目也都有subversion的接口。
熟悉版本控制的朋友都知道,subversion通常意義上說它是集中式版本控制,而git,hg等等是分布式版本控制。但是subversion支持版本庫的本地化同步,使得它在實際使用時也可以分布式訪問,比起git/hg不差。極客討論器內(nèi)部集成了subversion的本地化同步功能,無需額外操作,即可享受到比遠程訪問更快捷的訪問,還可以離線訪問遠程版本庫。
不會。實際上在我們開發(fā)組內(nèi)部也都安裝了subversion命令行客戶端,TortoiseSVN等軟件,所有這些subversion客戶端,包括SmartSVN,SyncSVN,VisualSVN等等,我們測試了許多,都沒有出現(xiàn)有沖突的情況。
特別是subversion命令行客戶端,和TortoiseSVN,分別使用控制臺和集成到資源管理器中,它們提供的某些便捷是極客討論器所比不了的,反過來說,極客討論器所實現(xiàn)的核心價值,“極客討論”,也是用控制臺或者資源管理器所不擅長的。極客討論器也不會去重復它們的功能。
會的,不久的將來,git和hg都會集成到極客討論器中。