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

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

4 ответа

Решение

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

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

Вот пример.

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

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

Имя файла "жестко закодировано" как: C:\myfile.txt

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

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

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

В функциональном дизайне у softcoding есть другие значения.

  • Жесткое кодирование: функция закодирована в системе, что не позволяет выполнять настройку;
  • Параметрический: функция настраивается с помощью таблицы или файлов свойств с ограниченными параметрическими значениями;
  • Softcoding: функция использует "движки", которые выводят результаты на основе любого количества параметрических значений (т. Е. Бизнес-правил в BRE); правила закодированы, но существуют как параметры в системе, написанные в форме сценария Hard Coding

Пример:

        // "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

// не использовать жестко закодированное значение данных

         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. Мягкое кодирование Если мы очень стараемся избежать ловушки жесткого кодирования, мы можем легко столкнуться с другим антипаттерном, называемым "мягким кодированием", который является его полной противоположностью.

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

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

Я нашел здесь несколько интересных объяснений, вы можете встретить Hard Coding в разных средах, 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://stackru.com/questions/34130513/how-to-solve-this-issue-of-hardcoded-string/34130992

  [3]: https://stackru.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) жесткое кодирование (2) мягкое кодирование

Жесткое кодирование. Присвойте значения программе во время написания исходного кода и сделайте программу исполняемым файлом. Теперь очень сложно изменить или модифицировать значения исходного кода программы. Как и в технологии блокчейн, генезис-блок - это жесткий код, который нельзя изменить или модифицировать.

Мягкое кодирование: это процесс вставки значений из внешнего источника в компьютерную программу. как вставка значений через клавиатуру, интерфейс командной строки. Мягкое кодирование считается хорошей практикой программирования, потому что разработчики могут легко изменять программы.

сценарий

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

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. Вы можете попросить пользователя ввести определение класса и сохранить эти данные.

Что-то вроде хранения в таблице базы данных

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

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

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

Другие вопросы по тегам