2009-12-13 222 views

回答

35

「硬編碼」是指將東西放入源代碼中。如果你是而不是硬編碼,那麼你可以像提示用戶輸入數據一樣,或者允許用戶將數據放在命令行上,或者類似的東西。

因此,要將文件的位置硬編碼爲C:驅動器,您只需將源文件的路徑名一起放在源代碼中即可。

這裏是一個例子。

int main() 
{ 
    const char *filename = "C:\\myfile.txt"; 

    printf("Filename is: %s\n", filename); 
} 

文件名是「硬編碼」爲:C:\myfile.txt

原因是加倍反斜槓反斜槓,因爲在C字符串中的特殊。

+3

順便說一句,很多文件系統也接受正斜槓'/'作爲目錄分隔符。主要優點是,您不會遇到可能會被視爲轉義字符的反斜槓。例如:「C:\ temp」與「C:/ temp」; \ t是表格字符。 – 2009-12-14 18:41:44

+3

Windows支持'/'就好,但其他廣泛使用的文件系統不支持'\'。出於這個原因,我總是使用'​​/'作爲我的路徑分隔符。 – 2012-06-09 01:55:53

9

「硬編碼」意味着你想嵌入你的程序或任何不能直接更改的項目。 例如,如果您使用的是數據庫服務器,那麼您必須硬編碼才能將數據庫連接到您的項目,並且不能由用戶更改。 因爲你有硬編碼。

0

相反,硬編碼的反義詞是軟編碼,硬編碼 VS 軟編碼 所以我覺得對於更好地理解這是更好地閱讀這兩個含義

在功能設計,softcoding有其他含義。

  • 硬編碼:功能編碼到系統不允許配置;
  • 參數:功能可通過表格驅動或具有有限參數值的屬性文件進行配置;
  • 軟編碼:功能使用「引擎」基於任意數量的參數值(即BRE中的業務規則)導出結果;規則 被編碼,但存在作爲系統參數,寫在腳本形式 硬編碼

實施例:

 // "hello world" is a hardcoded value   
     string firstName = "hello world"; 

https://softwareengineering.stackexchange.com/questions/67982/is-it-ever-a-good-idea-to-hardcode-values-into-our-applications

// VS不使用硬編碼數據值

  Console.WriteLine("first name :"); 
     string firstName = Console.ReadLine(); 

//其他示例

float areaOfCircle(int radius) 
    { 
    float area = 0; 
    area = 3.14*radius*radius; //3.14 is a [hardcoded value][1] 
     return area; } 

https://www.quora.com/What-does-hard-coded-something-mean-in-computer-programming-context

1。「硬編碼」是一個衆所周知的反模式對大多數Web開發的書警告我們的權利在序言。硬編碼是在其中我們存儲配置或輸入的數據,如文件路徑或遠程主機名,在源代碼中,而不是從一個配置文件,數據庫,用戶輸入,或其他外部源獲得它的不幸實踐。

硬代碼的主要問題是,它只是正常工作在一定的環境,並在任何時候的條件發生變化,我們需要修改源代碼,通常有多個不同的地方。

  • 軟編碼 如果我們非常努力避免硬編碼的陷阱,我們可以很容易地運行到所謂的「軟編碼」另一個反模式,這是它的完全相反。
  • 在軟編碼中,我們將應該在源代碼中的東西放到外部源中,例如我們將業務邏輯存儲在數據庫中。我們這樣做的最常見原因是業務規則將來會改變的恐懼,因此我們需要重寫代碼。

    在極端情況下,軟編碼的程序可以變得如此抽象難懂的,它幾乎是不可能理解它(特別是對新的團隊成員),以及極其難以維護和調試。

    我在這裏找到了一些有趣的解釋, 你可以在不同的環境中遇到硬編碼, IDE或編程語言。你提到的情況,我想添加別的東西

    1. Hard coding (also hard-coding or hardcoding) is the software development practice of embedding an input or configuration data directly into the source code of a program or other executable object, or fixed formatting of the data, instead of obtaining that data from external sources or generating data or formatting in the program itself with the given input. 
    
    2. hardcoded string 「row three」, should use @string resource 
    It is a very common android studio error/warning . 
    
    [Hard_coding][1] ; 
    
    [how-to-solve-this-issue-of-hardcoded-string][2]; 
    
    [hardcoded-string-row-three-should-use-string-resource][3]; 
    
        [1]: https://en.wikipedia.org/wiki/Hard_coding 
    
        [2]: https://stackoverflow.com/questions/34130513/how-to-solve-this-issue-of-hardcoded-string/34130992 
    
        [3]: https://stackoverflow.com/questions/8743349/hardcoded-string-row-three-should-use-string-resource 
    

    https://www.hongkiat.com/blog/code-optimization-coding-antipatterns/ https://en.wikipedia.org/wiki/Softcoding

    1

    方案

    在大學有很多學生在做不同的課程和考試後,我們必須準備一張顯示等級的標記卡。我可以計算等級兩種方式

    1.我可以寫一些像這樣的代碼

    if(totalMark <= 100 && totalMark > 90) { grade = "A+"; } 
        else if(totalMark <= 90 && totalMark > 80) { grade = "A"; } 
        else if(totalMark <= 80 && totalMark > 70) { grade = "B"; } 
        else if(totalMark <= 70 && totalMark > 60) { grade = "C"; } 
    

    2.您可以要求用戶輸入級定義一些地方和保存數據

    像存儲到數據庫表中的東西 enter image description here

    在第一種情況下,級別對於所有公司如果規則發生變化,代碼需要更改。但對於第二種情況,我們會根據用戶的要求爲用戶提供輸入等級。所以當等級規則改變時代碼將不會被改變。

    這是最重要的事情,當你給了用戶定義的業務邏輯更加的規定。第一種情況只不過是硬編碼

    所以你的問題,如果你問用戶在一開始就進入文件的路徑,那麼你就可以刪除你的代碼中的硬編碼路徑。