Précédent   Forum du club des développeurs et IT Pro > Le club des professionnels en informatique > Actualités
Actualités L'actualité des sociétés du secteur informatique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 09/11/2009, 10h35   #121
tuxlinuxien
Invité de passage
 
Yoann Cerda
Inscription : novembre 2009
Messages : 4
Détails du profil
Informations personnelles :
Nom : Yoann Cerda

Informations forums :
Inscription : novembre 2009
Messages : 4
Points : 1
Points : 1
Je suis en école d'informatique, et après 3 mois de C, un gars m'a montré un bout de code qui ne fonctionnait pas.

Code :
1
2
3
4
5
6
7
8
9
10
11
void my_putchar(char c)
{
    write(1, &c, 1);
}

int main()
{
    my_putchar('Joyeux noel');
    return (0);
}
Il s'est demandé pourquoi tout le monde a rigolé.
tuxlinuxien est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/11/2009, 11h02   #122
Louis Griffont
Inactif
 
Inscription : février 2003
Messages : 4 342
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 4 342
Points : 4 044
Points : 4 044
Citation:
Envoyé par jpelaho Voir le message
Juste pour réagir par rapport à ce genre de code que je ne trouve pas si idiot que ca. Genre if(true) ou if(1).

Il m'est déjà arrivé de faire ca dans mon code. La raison c'est qu'il ya effectivement un test qui doit être mis à ce niveau, je fais le test mais il s'avère que ce n’est pas le bon test alors je l'enlève mais sans supprimer l'instruction if (cela me permet de me rappeler cela plus tard en voyant un "if" qui n'a pas de sens dans le code).

Bien entendu pour faire une release, il faut enlever le test ou le corriger. Mais ca peut souvent aider de laisser ca dans un code de façon momentané.
Je préfère, pour ma part, mettre le test en commentaire, et même y ajouter d'autres commentaires afin de rappeler le pourquoi du comment on ne fait plus le test !
Louis Griffont est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 16h57   #123
Daestrik
Candidat au titre de Membre du Club
 
Inscription : août 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 18
Points : 11
Points : 11
Citation:
Envoyé par Gastiflex Voir le message
A la fac j'ai été en binôme sur un projet avec quelqu'un qui avait réécrit la fonction malloc, car celle de base n'était pas assez "optimisée".
Ca m'avait bien fait rire.
C'est pas faux. Malloc est lent. De l'autre côté, il faut être capable de le recoder...

Citation:
Envoyé par Gastiflex Voir le message
On appréciera :
- le fait de réécrire des fonctions standard
- le fait de les réécrire DEUX fois
- l'ordre des paramètres inversé par rapport à la fonction standard
- cette magnifique façon d'écrire un while dans la première fonction
La seule chose que je peux défendre c'est le fait de réécrire des fonctions standards : certaines ont des défauts (comme par exemple ne pas tester les pointeurs) ce qui est TRES gênant quand tu cherches un segfault que jamais tu n'irai chercher dans une fonction "officielle" à laquelle tu fais confiance.
Daestrik est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 17h08   #124
jaffael
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 62
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2007
Messages : 62
Points : 27
Points : 27
Par défaut Plus mathématiques que code, mais bon

Un des bouts codes m'ayant fait le plus rire après reprise d'un soft, c'est un calcul de moyenne (en Pascal):

Code :
1
2
3
4
If (pointA.X < pointB.X) then
  moyX:= pointA.X + (pointB.X - pointA.X)/2
else
  moyX:= pointB.X + (pointA.X - pointB.X)/2;

ce qui est évidement la même chose (moyX:= (pointA.X + pointB.X)/2 ), seulement quand c'est répété plusieurs fois (en X et en Y aussi), ça devient vite très lourd à lire.

avec des choses aussi du genre (où maval est un boolean)
Code :
1
2
3
4
if (maval=true) then
  maval:= false
else
  maval:= true;
jaffael est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 17h09   #125
jabbounet
Expert Confirmé
 
Avatar de jabbounet
 
Homme frederic frances
Consultant informatique
Inscription : juin 2009
Messages : 1 848
Détails du profil
Informations personnelles :
Nom : Homme frederic frances
Âge : 37

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : juin 2009
Messages : 1 848
Points : 2 675
Points : 2 675
Citation:
Envoyé par Daestrik Voir le message
La seule chose que je peux défendre c'est le fait de réécrire des fonctions standards : certaines ont des défauts (comme par exemple ne pas tester les pointeurs) ce qui est TRES gênant quand tu cherches un segfault que jamais tu n'irai chercher dans une fonction "officielle" à laquelle tu fais confiance.
Il est souvent plus simple de les encapsuler et de contrôler les paramètres plutôt que de les réécrire.
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 17h34   #126
Daestrik
Candidat au titre de Membre du Club
 
Inscription : août 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 18
Points : 11
Points : 11
Citation:
Envoyé par jabbounet Voir le message
Il est souvent plus simple de les encapsuler et de contrôler les paramètres plutôt que de les réécrire.
Certes, mais dans le cas d'un strcpy ça reste raisonnable.
Daestrik est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/11/2009, 19h47   #127
Arnaud F.
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 188
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 188
Points : 8 881
Points : 8 881
Une fois j'ai eu droit à un super :

Code SQL :
UPDATE champ1 = champ1 FROM uneTable

Je me suis toujours demandé son utilité (surtout en dehors de toute transaction ...)
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 20h02   #128
Mac LAK
Inactif
 
Avatar de Mac LAK
 
Inscription : octobre 2004
Messages : 3 894
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : octobre 2004
Messages : 3 894
Points : 4 681
Points : 4 681
Citation:
Envoyé par Arnaud F. Voir le message
Je me suis toujours demandé son utilité (surtout en dehors de toute transaction ...)
Déclencher un trigger et/ou une procédure stockée, peut-être ?
Mac LAK est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 20h07   #129
Arnaud F.
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 188
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 188
Points : 8 881
Points : 8 881
Citation:
Envoyé par Mac LAK Voir le message
Déclencher un trigger et/ou une procédure stockée, peut-être ?
J'ai vérifié, t'en fais pas, y a pas
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/11/2009, 20h24   #130
Mac LAK
Inactif
 
Avatar de Mac LAK
 
Inscription : octobre 2004
Messages : 3 894
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : octobre 2004
Messages : 3 894
Points : 4 681
Points : 4 681
Citation:
Envoyé par Arnaud F. Voir le message
J'ai vérifié, t'en fais pas, y a pas
Alors on va dire qu'à une époque lointaine, il y en a eu une, qu'elle a disparu mais pas le code de déclenchement... L'autre hypothèse étant nettement insultante pour le codeur, c'est forcément la première solution, n'est-ce pas ?
Mac LAK est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 21h07   #131
Tofalu
Rédacteur

 
Avatar de Tofalu
 
Christophe Warin
Inscription : octobre 2004
Messages : 8 633
Détails du profil
Informations personnelles :
Nom : Christophe Warin
Âge : 29

Informations forums :
Inscription : octobre 2004
Messages : 8 633
Points : 24 310
Points : 24 310
Citation:
Envoyé par Mac LAK Voir le message
Déclencher un trigger et/ou une procédure stockée, peut-être ?
Peut être aussi de vérifier que champ1 respecte toujours une contrainte ou bien de vérifier que le jeu d'enregistrements est updatable. Des raisons, on peut toujours en trouver à posterori, mais est ce qu'il y en avait une sur le moment ?
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 22h56   #132
jabbounet
Expert Confirmé
 
Avatar de jabbounet
 
Homme frederic frances
Consultant informatique
Inscription : juin 2009
Messages : 1 848
Détails du profil
Informations personnelles :
Nom : Homme frederic frances
Âge : 37

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : juin 2009
Messages : 1 848
Points : 2 675
Points : 2 675
personellement je vais pencher pour l'hypothèse de mac lak.

Ceci dit j'ai aussi vu des procédures stockées lancer des exception (Division par zéro) pour sortir en cas d'erreur.
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2009, 23h12   #133
Mac LAK
Inactif
 
Avatar de Mac LAK
 
Inscription : octobre 2004
Messages : 3 894
Détails du profil
Informations personnelles :
Âge : 38
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : octobre 2004
Messages : 3 894
Points : 4 681
Points : 4 681
Citation:
Envoyé par jabbounet Voir le message
Ceci dit j'ai aussi vu des procédures stockées lancer des exception (Division par zéro) pour sortir en cas d'erreur.
J'ai vu ça aussi en C++ : des boucles cassées par des levées d'exception volontaires au lieu d'un simple break... Ou des exceptions levées en traitement nominal (= à chaque appel), le code utile étant dans le catch et la gestion des erreurs dans le try...
Mac LAK est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/11/2009, 11h39   #134
inconnu652000
Membre habitué
 
Inscription : mars 2007
Messages : 135
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 135
Points : 100
Points : 100
Par défaut en c

if (test);
{
code
}

C'est bête mais on peut mettre du temps à le voir
inconnu652000 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2009, 11h55   #135
jabbounet
Expert Confirmé
 
Avatar de jabbounet
 
Homme frederic frances
Consultant informatique
Inscription : juin 2009
Messages : 1 848
Détails du profil
Informations personnelles :
Nom : Homme frederic frances
Âge : 37

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : juin 2009
Messages : 1 848
Points : 2 675
Points : 2 675
Citation:
Envoyé par inconnu652000 Voir le message
if (test);
{
code
}

C'est bête mais on peut mettre du temps à le voir
c'est balot, perso je l'ai vu sur des boucles for

Code :
1
2
3
for ( ....) ;
   quelquechose
ou une variante

Code :
1
2
3
4
for ( ....) 
   quelquechose;
   quelquechose d'autre qui devrais aussi etre dans la boucle;
comme quoi c'est une bonne habitude de mettre systématiquement des accolades sur les boucles.
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2009, 13h20   #136
Ermite Chevelu
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2006
Messages : 7
Points : 12
Points : 12
je suis tombé là dessus aujourd'hui... personnellement je trouve que ça pique un peu les yeux. Le pire c'est que l'appli est bourré de truc du même genre
Code :
1
2
3
4
5
6
7
8
9
10
if (MaClass.maFonction(string1, result) == 0)
	if (MaClass.maFonction(string2, result) == 0)
		if (MaClass.maFonction(string3, result) == 0)
			if (MaClass.maFonction(string4, result) == 0)
				if (MaClass.maFonction(string5, result) == 0)
					if (MaClass.maFonction(string6, result) == 0) == 0)
						if (MaClass.maFonction(string7, result) == 0)
							return false;
return true;
Ermite Chevelu est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 11/11/2009, 00h21   #137
PierreAd
Membre confirmé
 
Homme
Inscription : février 2005
Messages : 293
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : février 2005
Messages : 293
Points : 276
Points : 276
Citation:
Envoyé par jabbounet Voir le message
ou une variante

Code :
1
2
3
4
for ( ....) 
   quelquechose;
   quelquechose d'autre qui devrais aussi etre dans la boucle;
comme quoi c'est une bonne habitude de mettre systématiquement des accolades sur les boucles.
J'ai souvent croise ça aussi il y a quelques mois, sur quelques lignes de code comme c'est le cas ici, c'est assez simple a voir, beaucoup moins quand c'est au milieu de pages et de pages de code du même style (souvent mal indente forcement)... Moi qui ai l'habitude de toujours utiliser les accolades
PierreAd est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/11/2009, 00h58   #138
deadalnix
Membre Expert
 
Inscription : juillet 2006
Messages : 1 522
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 522
Points : 1 724
Points : 1 724
Citation:
Envoyé par Mac LAK Voir le message
J'ai vu ça aussi en C++ : des boucles cassées par des levées d'exception volontaires au lieu d'un simple break... Ou des exceptions levées en traitement nominal (= à chaque appel), le code utile étant dans le catch et la gestion des erreurs dans le try...
Il y a des gens qui en ont fait un style en java. La programmation par exceptions. Selon eux, c'est génialissime, mais je suis pas franchement convaincu.
deadalnix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/11/2009, 03h50   #139
sunseb7
Invité régulier
 
Inscription : octobre 2009
Messages : 13
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Suisse

Informations forums :
Inscription : octobre 2009
Messages : 13
Points : 6
Points : 6
Citation:
Envoyé par OWickerman Voir le message
Le genre de truc que je déteste en PHP, l'utilisation abusive des echo...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	<?php
			include ('fonction.inc');
			titre('Pièces justificatives');
		echo "<table border='0' width='95%' CELLPADDING='1' align='center' class='txt_tab_tarif'>";
		echo "<tr><td colspan='2'>";sstitre('Joindre les pièces justificatives suivantes');echo "</td></tr>";
		echo "<tr><td colspan='2'>(<b>photocopie</b> obligatoirement):</td></tr>";
		echo "<tr><td colspan='2'>&nbsp;</td></tr>";
		echo "<tr><td><img src='img/puce2.gif'></td><td>Photocopie du justificatif d'adresse (Eau, EDF...)</td></tr>";
		echo "<tr><td valign='top'><img src='img/puce2.gif'></td><td>Photocopie de l'avis d'imposition ".(date('Y')-2)." ou ".(date('Y')-1)." (si vous êtes imposable)<br> OU photocopie de la dernière notification de la CAF (".date('Y')." avec le quotient familial)</td></tr>";
		echo "<tr><td><img src='img/puce2.gif'></td><td>Cachet de l'établissement scolaire pour les primaires, maternelles et collégiens dans le cadre réservé à cet effet.</td></tr>";
		echo "<tr><td><img src='img/puce2.gif'></td><td>Attestation d'inscription dans l'établissement scolaire pour les élèves fréquentant un lycée</td></tr>";
		echo "<tr><td colspan='2'>&nbsp;</td></tr>";
		echo "<tr><td colspan='2' align='center'><a href='#'><img src='img/b_fermer.gif' border='0' onClick='self.close();'></a></td></tr>";
		echo "</table>";
	?>
Cette page la étant simple, ça va encore... J'en ai de pires :
Celui ci, par exemple, qui, non seulement abuse des echo, mais en plus essaie de sauvegarder des sauts de lignes....
Ah, oui, la technique des tableaux dans des tableaux est un truc de fourbe. On devrait pendre les gens qui osent faire ça !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
			echo "<form name='rech_iti' id='rech_iti' method='GET' action='rech_iti_res.php' target='_self'>";
			echo "<table border='0' width='95%' CELLPADDING='0' align='center' class='txt_tab_tarif'>";
			echo "<tr><td colspan=2 class='txt_sstitre'>Merci de remplir le formulaire suivant</td></tr>";
			echo "<tr><td colspan=2 class='txt_sstitre'>&nbsp;</td></tr>";
			echo "<tr><td>Période de départ souhaité</td><td>";
			echo "<select name='list_per' class='txt_menu_der' id='list_per'>";foreach($tabperiode as $cle=>$valeur){echo "<option class='txt_menu_der' value='".$cle."'>".$valeur."</option>\n";} 
			echo "</select>";
			echo "</td></tr>";
			echo "<tr><td>Heure</td><td>";echo "<select name='heure' class='txt_menu_der' id='heure'>";for($i=0;$i < 24;$i++){echo "<option class='txt_menu_der' value='".$i."'>".$i."</option>\n";}echo "</select> &nbsp; h &nbsp;&nbsp;";echo "<select name='minute' class='txt_menu_der' id='minute'>";for($i=0;$i <= 59;$i{ echo "<option class='txt_menu_der' value='".$i."'>".$i."</option>\n";}echo "</select>&nbsp;&nbsp;mn";
			echo "</td></tr><tr><td colspan='2'>&nbsp;</td></tr>";
			
			//DEPART
			echo "<tr><td colspan='2'>";
			echo "<fieldset style='border:2px solid rgb(191, 191, 191);width: 400px'>";
				echo "<legend class=txt_sstitre>Départ</legend>";
				echo "<table border='0' align='center' width='80%' CELLPADDING='0' class='txt_menu_der'>";
				echo "<tr><td>Commune</td><td>";chmpderoul_noSel_free('list_comm_dep','txt_menu_der',$tabcommune,"onchange=\"go('php_ajax/commune_dep.php','')\"");echo "</td></tr>";
				echo "<tr><td>Rue</td><td>";chmpderoul_mess_free('list_rue_dep','txt_menu_der',$tabrue_dep,'Choisir une commune',"onchange=\"go('php_ajax/rue_dep.php','')\"");echo "</td></tr>";
				echo "<tr><td>Station</td><td>";chmpderoul_mess_free('list_station_dep','txt_menu_der',$tabstation_dep,'Choisir une rue',"");
				echo "<div name='blocdepart' id='blocdepart'><input type='hidden' name='sta_dep' id='sta_dep' value='0'></div>";
				echo "</td></tr>";
				echo "</table>";
			echo "</fieldset></td></tr><tr><td>&nbsp;</td></tr>";
			
			//ARRIVEE
			echo "<tr><td colspan='2'>";
			echo "<fieldset style='border:2px solid rgb(191, 191, 191);width: 400px'>";
				echo "<legend class=txt_sstitre>Arrivée</legend>";
				echo "<table border='0' align='center' width='80%' CELLPADDING='0' class='txt_menu_der'>";
				echo "<tr><td>Commune</td><td>";chmpderoul_noSel_free('list_comm_arr','txt_menu_der',$tabcommune,"onchange=\"go('php_ajax/commune_arr.php','')\"");echo "</td></tr>";
				echo "<tr><td>Rue</td><td>";chmpderoul_mess_free('list_rue_arr','txt_menu_der',$tabrue_dep,'Choisir une commune',"onchange=\"go('php_ajax/rue_arr.php','')\"");echo "</td></tr>";
				echo "<tr><td>Station</td><td>";chmpderoul_mess_free('list_station_arr','txt_menu_der',$tabstation_dep,'Choisir une rue',"");
				echo "<div name='blocarrivee' id='blocarrivee'><input type='hidden' name='sta_arr' id='sta_arr' value='0'></div>";
				echo "</td></tr>";
				echo "</table>";
			echo "</fieldset></td></tr>";
			
			echo "<tr><td colspan='2'>&nbsp;</td></tr><tr><td colspan='2'>&nbsp;</td></tr>";
			echo "<tr><td colspan='2' align='center'><img src='img/b_rechercher.gif' style='cursor:pointer;' border='0'  onClick='testEtValid(\"rech_iti\");'>";
			
			 echo "</td></tr>";
			echo "</table></form>";
		?>
Pour infos, quand on m'a demandé de finaliser le site, j'ai du remettre les pages au propre avant de comprendre ce qui s'y passait...
Quelle solution élégante pour éviter ce problème au fait ? Car c'est vrai qu'on se retrouve parfois vite avec beaucoup de "echo"...

Après pour ce qui est de mélanger traitement et HTML, c'est sûr que c'est juste infernal à maintenir ensuite...
sunseb7 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/11/2009, 09h42   #140
jabbounet
Expert Confirmé
 
Avatar de jabbounet
 
Homme frederic frances
Consultant informatique
Inscription : juin 2009
Messages : 1 848
Détails du profil
Informations personnelles :
Nom : Homme frederic frances
Âge : 37

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : juin 2009
Messages : 1 848
Points : 2 675
Points : 2 675
Citation:
Envoyé par deadalnix Voir le message
Il y a des gens qui en ont fait un style en java. La programmation par exceptions. Selon eux, c'est génialissime, mais je suis pas franchement convaincu.
moi aussi je ne suis pas convaincu
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web