Что значит "жестко закодированный"?

мое задание просит меня, чтобы получить доступ к test.txt document, поэтому имя файла должно быть жестко закодировано на мой диск C. Я понятия не имею, что означает хардкодом. Кто-нибудь может мне помочь?

4 ответов


"жесткое кодирование" означает внесение чего-то в исходный код. Если вы не жесткое кодирование, затем вы делаете что-то вроде запроса пользователя для данных или позволяете пользователю помещать данные в командную строку или что-то в этом роде.

Итак, чтобы жестко закодировать местоположение файла как находящегося на диске C:, вы просто поместите путь к файлу все вместе в исходном коде.

вот пример.

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

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

имя файла "hard coded" as:C:\myfile.txt

причина люфта в два раза, потому что обратные слеши в C-строками.


"жесткое кодирование" означает то, что вы хотите встроить в свою программу или любой проект, который нельзя изменить напрямую. Например, если вы используете сервер баз данных, то вы должны hardcode для подключения базы данных к вашему проекту, и это не может быть изменено пользователем. Потому что у тебя жесткий код.


сценарий

в колледже есть много студентов, делающих разные курсы, и после экзамена мы должны подготовить карту оценок, показывающую класс. Я могу вычислить класс двумя способами

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

в первом случае оценка является общей для всех курсов, и если правило изменяется, код должен быть изменен. Но для второго случая мы даем пользователю возможность ввести класс на основе их требования. Таким образом, код не будет изменен при изменении правил оценки.

это важно, когда вы предоставляете пользователям больше возможностей для определения бизнес-логики. В первом случае ничего кроме жесткий Кодирование.

поэтому в вашем вопросе, если вы попросите пользователя ввести путь к файлу в начале, вы можете удалить жестко закодированный путь в своем коде.


напротив, антоним жесткого кодирования-мягкое кодирование,жесткого кодирования vs мягкое кодирование поэтому я думаю, что для лучшего понимания этого лучше читать оба значения

в дизайне функций softcoding имеет другие значения.

  • Hardcoding: функция закодирована в систему, не позволяющую конфигурировать;
  • параметрический: особенность конфигурируема через управляемую таблицу, или файлы свойств с ограниченными параметрическими значениями;
  • 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."жесткого кодирования " известный антипаттерн против что большинство книг веб-разработки предупреждает нас прямо в предисловии. Жесткое кодирование-это неудачная практика, в которой мы храним конфигурацию или входные данные, такие как путь к файлу или имя удаленного хоста, в исходном коде, а не получаем их из файла конфигурации, базы данных, пользовательского ввода или другого внешнего источника.

основная проблема с жестким кодом заключается в том, что он работает только в определенной среде, и в любое время условия меняются, нам нужно изменить исходный код, обычно в нескольких разных местах.

  1. Мягкое Кодирование Если мы очень постараемся избежать ловушки жесткого кодирования, мы легко можем столкнуться с другим антипаттерном под названием "мягкое кодирование", которое является его полной противоположностью.

в программном кодировании мы помещаем вещи, которые должны быть в исходном коде во внешние источники, например, мы храним бизнес-логику в базе данных. Самая распространенная причина, почему мы это делаем, - это страх, что бизнес-правила изменятся в будущее, поэтому нам нужно будет переписать код.

в крайних случаях мягкая закодированная программа может стать настолько абстрактной и запутанной, что ее почти невозможно понять (особенно для новых членов команды) и чрезвычайно трудно поддерживать и отлаживать.

Я нашел здесь интересное объяснение , вы можете встретить жесткое кодирование в разных средах , 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