Lil*_*ems 22 definition hard-coding
我的作业要求我访问test.txt
文档,因此文件名必须硬编码到我的C盘.我不知道硬编码意味着什么.有人可以帮我这个吗?
ste*_*eha 47
"硬编码"意味着在您的源代码中加入一些内容.如果你不是硬编码,那么你会做一些事情,比如提示用户输入数据,或允许用户将数据放在命令行上,或类似的东西.
因此,要将文件的位置硬编码为C:驱动器,您只需将文件的路径名全部放在源代码中即可.
这是一个例子.
int main()
{
const char *filename = "C:\\myfile.txt";
printf("Filename is: %s\n", filename);
}
Run Code Online (Sandbox Code Playgroud)
文件名"硬编码"为: C:\myfile.txt
反斜杠加倍的原因是因为反斜杠在C字符串中是特殊的.
设想
在大学里,有很多学生在学习不同的课程,考试后我们必须准备一张显示成绩的成绩卡。我可以用两种方法计算等级
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"; }
Run Code Online (Sandbox Code Playgroud)
2.您可以要求用户在某个地方输入等级定义并保存该数据
在第一种情况下,所有课程的成绩都是相同的,如果规则发生变化,则需要更改代码。但对于第二种情况,我们为用户提供根据他们的要求输入成绩的规定。因此,当成绩规则发生变化时,代码不会发生变化。
当您为用户提供更多定义业务逻辑的规定时,这一点很重要。第一种情况只不过是硬编码。
因此,在您的问题中,如果您要求用户在开始时输入文件的路径,那么您可以删除代码中的硬编码路径。
小智 7
有两种类型的编码。
(1) hard-coding
(2) soft-coding
Run Code Online (Sandbox Code Playgroud)
硬编码。编写源代码时给程序赋值,生成程序的可执行文件。现在,更改或修改程序源代码值是非常困难的过程。与区块链技术一样,创世块是无法更改或修改的硬代码。
软编码:是将外部源的值插入计算机程序的过程。就像通过键盘、命令行界面插入值一样。软编码被认为是良好的编程实践,因为开发人员可以轻松修改程序。
硬编码的反义词是软编码。为了更好地理解硬编码,我将介绍这两个术语。
例子:
// firstName has a hard-coded value of "hello world"
string firstName = "hello world";
// firstName has a non-hard-coded provided as input
Console.WriteLine("first name :");
string firstName = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
硬编码常量[1]:
float areaOfCircle(int radius)
{
float area = 0;
area = 3.14*radius*radius; // 3.14 is a hard-coded value
return area;
}
Run Code Online (Sandbox Code Playgroud)
此外,硬编码和软编码可以被认为是反模式[2]。因此,应该努力在硬编码和软编码之间取得平衡。
- 硬编码 “硬编码”是一种众所周知的反模式,大多数 Web 开发书籍在前言中就警告我们。硬编码是一种不幸的做法,我们将配置或输入数据(例如文件路径或远程主机名)存储在源代码中,而不是从配置文件、数据库、用户输入或其他外部源中获取。 .
硬编码的主要问题是它只能在一定的环境下才能正常工作,而且在任何时候条件发生变化时,我们都需要修改源代码,通常是在多个单独的地方。- 软编码
如果我们非常努力地避免硬编码的陷阱,我们很容易遇到另一种称为“软编码”的反模式,它正好相反。
在软编码中,我们将源代码中应该存在的东西放到外部源中,例如我们将业务逻辑存储在数据库中。我们这样做的最常见原因是担心未来业务规则会发生变化,因此我们需要重写代码。
在极端情况下,软编码程序会变得如此抽象和复杂,以至于几乎无法理解它(尤其是对于新团队成员),并且极难维护和调试。
来源和引用:
1:Quora:在计算机编程环境中,硬编码是什么意思?
2: Hongkiat:你必须避免的 10 个编码反模式
进一步阅读:
Software Engineering SE:将值硬编码到我们的应用程序中是否是个好主意?
维基百科:硬
编码 维基百科:软编码