文件即編碼 四 編碼的實質 表述與合作

2021-09-09 08:42:11 字數 1593 閱讀 9193

本章為對之前的章節進行乙個小結,並對後續展開進行乙個鋪墊。   

在平時的編碼中,都要求按照所謂的**規範、開發規範、**提交規範,並會編寫相應的手冊以及通過**掃瞄等手段防止有違規的現象出現,並且有些公司還會通過測試用例、**review等手段,保證其編碼的質量。

當然,以上所述的方式、方法,都是通過長年的經驗積累而成,並且根據各個公司不同的情況而有所調整。為達到**質量的保證,需持續進行以上的工作,並投入大量的人力,且需時時改進。

我們為何需要花費如此的人力、無力、時間在保障**質量這件事情上?教科書式的答案告訴我們是:可維護、可擴充套件、可復用等,而且可以列舉出一系列的理論與案例。但我個人認為,理由只有乙個,就是能夠讓大規模的技術人員進行靈活的合作。

在《未來簡史》中,作者認為人類只所以能夠與別的生物與眾不同,且如此特殊,是因為人類能夠進行靈活的合作,往往能夠高效合作的組織能夠勝出。

如linux核心,至今有許多不同的組織或是技術人員,為其貢獻了大量的原始碼,而且這些技術人員可能互相不認知,能夠基於這樣大規模、長時間的源源不斷的開發方式的基礎,就在於其核心本身的設計為技術人員提供了這種合作方式。

對於其它專案或系統來說,則希望通過制定一系列的標準、規範、流程,甚至還需對參與的人進行相應的培訓工作,來

獲得如此的效果

。然而以上種種的方式,經過長期的經驗證明,多數最終的效果不算理想。如果「靈活的合作」為「道」的方面,則上述所說的方式則為「體」或是「術」。現問題是我們認為的那些「體」、「術」隨著時代的變化,是否已經和「道」漸行漸遠,或是一開始就錯了?

經過不同時代的發展,其管理方式在不斷的演進,而個人認為編碼與管理有相同之處,其相應的理念和技術也在不斷改進。對於編碼來說,所謂的管理就是系統、模組、功能、**的組織、劃分,就如同企業的組織劃分。其目的就是為了保持靈活性,以及快速響應。而如何使其達到靈活性、快速響應,則需大量的技術人員能夠高效的合作。

我們知道,在開發乙個系統或某個功能時,大部分的時間都花在溝通上,敏捷管理中的很多方式、方法就是為了加強溝通。之前文章中提到的資訊樹就是為了解決溝通問題,其提供了一種統一的業務描述方式(如領域驅動設計的統一語音),而且不是僅僅技術人員間的溝通,而是在業務、產品、技術、測試中進行溝通,這樣為不同的人員提供了高效的溝通方式,而且其遮蔽了自然語言不精確的問題。

由於資訊樹是樹的的結構,其可轉變為森林,或是把森林變為樹,當然這是從業務角度,而不是演算法角度。其提供了一種高效的模組劃分,或是功能劃分的方式,且資訊樹關注的是有哪些邏輯點,而不是邏輯的具體實現,這便於技術人員進行大規模開發。這就如同把大象放進冰箱,其關注的是有哪幾個步驟(開啟冰箱門、放進冰箱、關上冰箱門),而不是每個步驟的具體實現方式。(具體的實現方式,可參考

當然其相應的具體技術實現方式,還需不斷的摸索,在之前的文章中,給出了關於資料讀寫的案例,此也是基於領域驅動設計的思想。其實編寫**與編寫文章類似,如需要劃分章節,各章節如何承上其下,而且**本身就是最佳的文件,其**規範也是為了提高其可讀性,但其無法體現其具體的業務邏輯,這還需要技術人員花大量的時間了解業務邏輯,而且由於技術人員經驗、認知的不同,即使相應的業務邏輯,也有多種實現方式。

資訊樹的目的,其實就在於對業務的溝通、設計標準化、規範化,這就如同邏輯符號,各種語言的規範,其本身既是文件又是編碼,達到靈活、高效的目的。

Web文件編碼的指定

web開發中,文件常常指 x html文件 xml文件 css文件 js文件。指定文件編碼的方式有以下幾種 http header中指定文件編碼 在乙個典型的http響應頭里,content type的值中可以指定文件編碼,如 對於動態網頁,用這種方式指定文件編碼,在指令碼中直接輸出響應頭即可 he...

ffmpeg採集編碼的測試文件

1.本測試文件只能在linux環境下執行,請安裝ubuntu10.04以上的系統,並且不能使用虛擬機器執行 2.執行ubuntu 下的命令列終端terminal,先安裝相應的編譯連線工具,sudo apt get install make 安裝make工程工具 3.首先請安裝新版的x264編碼庫 1...

文字的四種編碼方式

ansi 系統預設的標準文字儲存格式。ansi是american national standards institute的縮寫。它成立於1918年,是乙個自願性的組織,擁有超過1300個會員,包括所有大型的電腦公司。ansi專為電腦工業建立標準,它是世界上相當重要的標準。unicode 世界上所有...