軟編碼和硬編碼概念的區分與背後設計思想

2021-09-21 09:16:47 字數 1115 閱讀 3405

昨天在檢視nhibernate乙個幫助文件中,涉及到通過嵌入式讀取配置檔案消除對應用程式中對檔名的硬編碼,第一次聽說硬編碼名詞概念,在csdn看到一些人對於這些概念的討論,與硬編碼對應的是軟編碼,對於硬編碼和軟編碼定義其實是相對而言的,如果你了解這些名詞,應該能夠感覺其實與應用程式的設計上時異曲同工.  舉乙個例項:

硬編碼主要是關聯很緊密的結構,而軟編碼是關聯比較松的。

從實現的層次上,也就是一級關聯很多級關聯的差別。比如

int i = 1; 這個是數字和變數的直接一級關聯

#define pig 1

int i = pig; 這個是數字通過pig間接關聯數字

多級關聯的好處就是你可以通過修改中間的一層,而不需要直接改變對應的一層。比如你可以改變pig 2,而不需要改變int i = pig;

如果你覺得這樣只不過是增加無聊的層次,那麼首先應該認識到中間層帶來的若干好處。比如清晰的邏輯劃分:

#define pig 1 

int i = pig

ing j = pig

i,j 都是對應乙個邏輯詞pig,而不是某個數字,我們可以預想到,如果pig需要改變,那麼i,j都是應該改變的,因為他們邏輯相同。如果硬編碼就不能表達這種邏輯上相同的關係,只能分別修改i,j。這就浪費一些時間,同時增加出錯的可能性

第二個是中間層可以抽象乙個簡單的使用介面出來,方便具體實現的修改:

同時是相面的例子,我們不需要理會pig具體是什麼,也就是不需要理會pig的實現。這樣就可以將實現和介面區分,pig可以修改而不干擾的使用它的**。

#define pig 2

int i = pig; //不用改變

ing j = pig;  //不用改變

不過軟編碼比硬編碼要複雜一些,對以後的考慮要周到一些。軟編碼是一種設計,而硬編碼不過是一種具體的實現。軟體開發不只是需要乙個軟體的實現,更需要軟體能夠很好的修改,方便得擴充套件,所以需要一些設計技巧在裡面

其實我們常說對程式進一步重構,我們目的就是實現物件之間的松耦合,使程式能夠應對多種情況下的變化,具有一定的擴充套件性,對於這兩個名詞其實它的背後隱藏的是一種設計思想,硬編碼和軟編碼只是一種表現在實際情況中一種問題,而這種思想可以應用於多個方面,面對多個問題。

總結思想比總結問題 要更加高效,以不變應萬變。

硬編碼和軟編碼

1 電腦科學中bai,只有硬編碼 hardcode 以及非硬編碼,有人也成為 軟編碼 2 硬編碼和軟dao編碼的區別是 軟編碼可以在執行時確定,修改 而硬編碼是不能夠改變的。所有的硬編碼和軟編碼的區別都可以有這個意思擴充套件開。3 在電腦程式或文字編輯中,硬編碼是指將可變變數用乙個固定值來代替的方法...

字符集與編碼 概念區分

在這裡主要記錄一下字符集與編碼這兩個概念,因為在日常程式設計當中很容易把這兩個概念弄混掉。對這兩個概念做澄清也有利於在程式設計當中對亂碼問題的解決。首先來說一下什麼字符集。其實字符集是乙個抽象的概念,例如我們可以把所有的英文本母稱為乙個字符集,同樣的,所有的中文字元也可以稱為乙個字符集,或者將人類所...

硬中斷和軟中斷的區分

概述 從本質上來講,中斷是一種電訊號,當裝置有某種事件發生時,它就會產生中斷,通過匯流排把電訊號傳送給中斷控制器。如果中斷的線是啟用的,中斷控制器就把電訊號傳送給處理器的某個特定引腳。處理器於是立即停止自己正在做的事,跳到中斷處理程式的入口點,進行中斷處理。1 硬中斷 由與系統相連的外設 比如網絡卡...