2009-12-13 217 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

    在第一种情况下,级别对于所有公司如果规则发生变化,代码需要更改。但对于第二种情况,我们会根据用户的要求为用户提供输入等级。所以当等级规则改变时代码将不会被改变。

    这是最重要的事情,当你给了用户定义的业务逻辑更加的规定。第一种情况只不过是硬编码

    所以你的问题,如果你问用户在一开始就进入文件的路径,那么你就可以删除你的代码中的硬编码路径。