web-dev-qa-db-fra.com

Que signifie "codé en dur"?

Mon affectation me demande d'accéder à un document test.txt. Le nom du fichier doit donc être codé en dur sur mon lecteur C. Je n'ai aucune idée de ce que signifie coder en dur. Quelqu'un peut-il m'aider s'il vous plaît avec cela?

18
LilProblems

"codage dur" signifie mettre quelque chose dans votre code source. Si vous utilisez le codage not hard, vous pouvez inviter l'utilisateur à saisir les données, ou lui permettre de mettre les données sur la ligne de commande, ou quelque chose du genre.

Donc, pour coder en dur l’emplacement du fichier comme étant sur le lecteur C:, il vous suffit de mettre le chemin du fichier dans le code source.

Voici un exemple.

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

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

Le nom du fichier est "codé en dur" comme suit: C:\myfile.txt

La raison pour laquelle la barre oblique inversée est doublée est que les barres obliques inverses sont spéciales dans les chaînes C.

42
steveha

"Codage dur" signifie quelque chose que vous souhaitez intégrer à votre programme ou à tout projet qui ne peut pas être modifié directement. Par exemple, si vous utilisez un serveur de base de données, vous devez coder en dur pour connecter votre base de données à votre projet et ne peut pas être modifié par l'utilisateur. Parce que vous avez codé en dur.

11
Alex

Scénario

Dans un collège, de nombreux étudiants suivent différents cours et, après un examen, nous devons préparer une fiche de notes indiquant la note. Je peux calculer les deux façons

1. Je peux écrire du code comme ceci

    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. Vous pouvez demander à l’utilisateur de saisir la définition de la note quelque part et de sauvegarder ces données

Quelque chose comme stocker dans une table de base de données  enter image description here

Dans le premier cas, la note est commune à tous les cours et si la règle change, le code doit être changé. Mais dans le second cas, nous donnons à l’utilisateur la possibilité de saisir le grade en fonction de ses besoins. Le code ne sera donc pas modifié lorsque les règles de classement seront modifiées.

C'est ce qui importe lorsque vous donnez plus de possibilités aux utilisateurs de définir une logique métier. Le premier cas n'est rien d'autre que Codage difficile .

Ainsi, dans votre question, si vous demandez à l'utilisateur de saisir le chemin du fichier au début, vous pouvez supprimer le chemin codé en dur dans votre code.

2
Arun Sudhakaran

L'antonyme de codage en dur est codage en douceur. Pour une meilleure compréhension du codage en dur, je présenterai les deux termes.

  • Codage en dur : la fonction est codée dans le système, ce qui ne permet pas la configuration. 
  • Parametric : la fonctionnalité est configurable via des tables ou des fichiers de propriétés avec des valeurs paramétriques limitées;
  • Le codage logiciel : la fonctionnalité utilise des «moteurs» qui génèrent des résultats basés sur un nombre quelconque de valeurs paramétriques (par exemple, les règles de gestion dans BRE); les règles sont codées mais existent en tant que paramètres dans le système, écrites sous forme de script

Exemples:

// 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();

Une constante codée en dur[1]:

float areaOfCircle(int radius)
{
    float area = 0;
    area = 3.14*radius*radius;  //  3.14 is a hard-coded value
    return area;
}

De plus, codage en dur et codage en douceur pourraient être considérés comme étant anti-patterns[2]. Ainsi, il convient de rechercher un équilibre entre codage strict et codé.

  1. Codage dur Codage dur ” est un anti-modèle bien connu contre lequel la plupart des livres de développement Web nous préviennent dès la préface. Le codage en dur est la pratique regrettable dans laquelle nous stockons la configuration ou les données d'entrée , telles qu'un chemin de fichier ou un nom d'hôte distant, dans le code source plutôt que de l'obtenir à partir d'un fichier de configuration. , une base de données, une entrée utilisateur ou une autre source externe.

    Le principal problème du code matériel est que il ne fonctionne correctement que dans un environnement donné , et à tout moment, les conditions changent, nous devons modifier le code source, généralement dans plusieurs endroits séparés.

  2. Codage souple
    Si nous essayons très fort d’éviter le piège du codage dur, nous pouvons facilement nous heurter à un autre anti-modèle appelé « soft coding », qui est exactement le contraire.

    Dans le codage souple, nous plaçons des éléments qui devraient figurer dans le code source dans des sources externes , par exemple, nous stockons la logique applicative dans la base de données. La raison la plus courante pour laquelle nous agissons de la sorte est la crainte que les règles commerciales ne changent à l'avenir. Nous devrons donc réécrire le code.

    Dans les cas extrêmes, un programme codé de manière souple peut devenir tellement abstrait et compliqué qu’il est presque impossible de le comprendre (en particulier pour les nouveaux membres de l’équipe), et extrêmement difficile à maintenir et à conserver. déboguer .

Sources et citations:

1: Quora: Que signifie quelque chose de codé en dur dans un contexte de programmation informatique?
2: Hongkiat: Les 10 antipatternes de codage à éviter

Lectures supplémentaires:

Software Engineering SE: Est-ce une bonne idée d'inscrire des valeurs dans nos applications?
Wikipedia: codage en dur
Wikipedia: codage logiciel

1
leonidaa