Microsoft semble reconnaître que Java permet de développer plus
rapidement que C# et qu'il y a moins de failles de sécurité dans Java
que dans .net :
http://dsi.silicon.fr/nouveautes/microsoft-java-forever%E2%80%A6-1366
Non, c'est vraiment un problème de langage : la déclaration des exceptions de java oblige à ajouter du code à des endroits où ce n'est pas nécessaire, par exemple parce qu'on sait a priori que cette exception ne peut pas se produire.
Ben dans ce cas ça te coûte 2 lignes et 1 commentaire…
Comme ça même si par malheur tu avais raté une condition d'erreur, ton application est protégée (ou en tout cas tu auras des informations pour debugger). Enlève le throw si tu es vraiment sûr de toi.
Ce mauvais code n'aurait pas de raison d'être en premier lieu sans le défaut que je dénonce.
Pour moi, ce n'est pas un défaut, loin de là.
> Toute notion de code propre met obligatoirement en jeu des faux positifs?
Je ne comprends pas ce que tu veux dire.
Que parfois tu es obligé de rompre les normes de codage pour une raison quelconque. Manque de temps, pas de solution alternatives, conditions de détection automatique trop forte…
Un exemple tout con : le saut de ligne à 80 caractères.
> Le warning peut se désactiver directement dans l'interface de Sonar ou > de Jenkins.
Encore pire, un IDE.
Ce ne sont pas des IDE mais les outils de CI et d'analyse de code.
- -- Aeris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
Non, c'est vraiment un problème de langage : la déclaration des exceptions
de java oblige à ajouter du code à des endroits où ce n'est pas nécessaire,
par exemple parce qu'on sait a priori que cette exception ne peut pas se
produire.
Ben dans ce cas ça te coûte 2 lignes et 1 commentaire…
Comme ça même si par malheur tu avais raté une condition d'erreur, ton
application est protégée (ou en tout cas tu auras des informations pour
debugger).
Enlève le throw si tu es vraiment sûr de toi.
Ce mauvais code n'aurait pas de raison d'être en premier lieu sans le défaut
que je dénonce.
Pour moi, ce n'est pas un défaut, loin de là.
> Toute notion de code propre met obligatoirement en jeu des faux positifs?
Je ne comprends pas ce que tu veux dire.
Que parfois tu es obligé de rompre les normes de codage pour une raison
quelconque.
Manque de temps, pas de solution alternatives, conditions de détection
automatique trop forte…
Un exemple tout con : le saut de ligne à 80 caractères.
> Le warning peut se désactiver directement dans l'interface de Sonar ou
> de Jenkins.
Encore pire, un IDE.
Ce ne sont pas des IDE mais les outils de CI et d'analyse de code.
- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
Non, c'est vraiment un problème de langage : la déclaration des exceptions de java oblige à ajouter du code à des endroits où ce n'est pas nécessaire, par exemple parce qu'on sait a priori que cette exception ne peut pas se produire.
Ben dans ce cas ça te coûte 2 lignes et 1 commentaire…
Comme ça même si par malheur tu avais raté une condition d'erreur, ton application est protégée (ou en tout cas tu auras des informations pour debugger). Enlève le throw si tu es vraiment sûr de toi.
Ce mauvais code n'aurait pas de raison d'être en premier lieu sans le défaut que je dénonce.
Pour moi, ce n'est pas un défaut, loin de là.
> Toute notion de code propre met obligatoirement en jeu des faux positifs?
Je ne comprends pas ce que tu veux dire.
Que parfois tu es obligé de rompre les normes de codage pour une raison quelconque. Manque de temps, pas de solution alternatives, conditions de détection automatique trop forte…
Un exemple tout con : le saut de ligne à 80 caractères.
> Le warning peut se désactiver directement dans l'interface de Sonar ou > de Jenkins.
Encore pire, un IDE.
Ce ne sont pas des IDE mais les outils de CI et d'analyse de code.
- -- Aeris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
Non, elle est conditionnelle à la compilation également, comme ce doit être évident à la lecture pour quiconque connaît le C assez pour participer à la discussion.
Donc : essaie encore.
Elle est conditionnelle à la compilation à cause de quoi ? De rien du tout.
C'est juste une idée farfelue de plus des développeurs C/C⁺⁺. Les développeurs auront forcément la librairie sous la main, sinon ils ne peuvent ni écrire le code, ni le tester, ni le compiler.
Et une fois compilée, c'est à l'utilisateur de décider s'il utilisera ou non la librairie. Lui ne fait que télécharger un .so (rares sont ceux qui recompilent from scratch) pour s'en servir. Si demain il veut utiliser la lib, je ne vois pas pourquoi il devrait recompiler quand il est tout à fait possible de lui fournir une lib qui fonctionne dans les 2 modes.
Et je trouverais tout à fait abérant de trouver à disposition 2 versions d'une même lib. D'autant plus que là tu ne mentionnes qu'une seule dépendance optionnelle, quid du cas où il y en a plusieurs et où il existe donc potentiellement 2^n versions de la même lib ?
- -- Aeris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
Non, elle est conditionnelle à la compilation également, comme ce doit être
évident à la lecture pour quiconque connaît le C assez pour participer à la
discussion.
Donc : essaie encore.
Elle est conditionnelle à la compilation à cause de quoi ?
De rien du tout.
C'est juste une idée farfelue de plus des développeurs C/C⁺⁺.
Les développeurs auront forcément la librairie sous la main, sinon ils
ne peuvent ni écrire le code, ni le tester, ni le compiler.
Et une fois compilée, c'est à l'utilisateur de décider s'il utilisera ou
non la librairie.
Lui ne fait que télécharger un .so (rares sont ceux qui recompilent from
scratch) pour s'en servir.
Si demain il veut utiliser la lib, je ne vois pas pourquoi il devrait
recompiler quand il est tout à fait possible de lui fournir une lib qui
fonctionne dans les 2 modes.
Et je trouverais tout à fait abérant de trouver à disposition 2 versions
d'une même lib.
D'autant plus que là tu ne mentionnes qu'une seule dépendance
optionnelle, quid du cas où il y en a plusieurs et où il existe donc
potentiellement 2^n versions de la même lib ?
- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
Non, elle est conditionnelle à la compilation également, comme ce doit être évident à la lecture pour quiconque connaît le C assez pour participer à la discussion.
Donc : essaie encore.
Elle est conditionnelle à la compilation à cause de quoi ? De rien du tout.
C'est juste une idée farfelue de plus des développeurs C/C⁺⁺. Les développeurs auront forcément la librairie sous la main, sinon ils ne peuvent ni écrire le code, ni le tester, ni le compiler.
Et une fois compilée, c'est à l'utilisateur de décider s'il utilisera ou non la librairie. Lui ne fait que télécharger un .so (rares sont ceux qui recompilent from scratch) pour s'en servir. Si demain il veut utiliser la lib, je ne vois pas pourquoi il devrait recompiler quand il est tout à fait possible de lui fournir une lib qui fonctionne dans les 2 modes.
Et je trouverais tout à fait abérant de trouver à disposition 2 versions d'une même lib. D'autant plus que là tu ne mentionnes qu'une seule dépendance optionnelle, quid du cas où il y en a plusieurs et où il existe donc potentiellement 2^n versions de la même lib ?
- -- Aeris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
En quoi l'utilisation raisonnable des variables globales est-elle un "tricks" ?
Je n'ai que très peu d'exemples voire pas du tout où une variable globale est réellement justifiable. Et très souvent, commencer à mettre une varglo, c'est la porte ouverte à voir la moitié du code en varglo à plus ou moins long terme.
Pour des valeurs qui sont positionnées au lancement d'un programme et qui ne sont que lues par la suite dans un gazillion de lignes de code, ça simplifie _bien_ les choses.
Si tu veux, je te fais un devis pour l'explication de comment gérer ça dans un projet C.
-- Je cherche un nouveau travail... http://tboudet.free.fr/cv-thierry-boudet.pdf http://sigfood.dinorama.fr/
On 06/18/2011 01:47 PM, Aéris wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Le 18/06/2011 12:46, Tonton Th a écrit :
En quoi l'utilisation raisonnable des variables globales
est-elle un "tricks" ?
Je n'ai que très peu d'exemples voire pas du tout où une variable
globale est réellement justifiable.
Et très souvent, commencer à mettre une varglo, c'est la porte ouverte à
voir la moitié du code en varglo à plus ou moins long terme.
Pour des valeurs qui sont positionnées au lancement d'un
programme et qui ne sont que lues par la suite dans un
gazillion de lignes de code, ça simplifie _bien_ les
choses.
Si tu veux, je te fais un devis pour l'explication de
comment gérer ça dans un projet C.
--
Je cherche un nouveau travail...
http://tboudet.free.fr/cv-thierry-boudet.pdf
http://sigfood.dinorama.fr/
En quoi l'utilisation raisonnable des variables globales est-elle un "tricks" ?
Je n'ai que très peu d'exemples voire pas du tout où une variable globale est réellement justifiable. Et très souvent, commencer à mettre une varglo, c'est la porte ouverte à voir la moitié du code en varglo à plus ou moins long terme.
Pour des valeurs qui sont positionnées au lancement d'un programme et qui ne sont que lues par la suite dans un gazillion de lignes de code, ça simplifie _bien_ les choses.
Si tu veux, je te fais un devis pour l'explication de comment gérer ça dans un projet C.
-- Je cherche un nouveau travail... http://tboudet.free.fr/cv-thierry-boudet.pdf http://sigfood.dinorama.fr/
Nicolas George
Aéris , dans le message <4dfd083b$0$6992$, a écrit :
Ben dans ce cas ça te coûte 2 lignes et 1 commentaire…
Qui ne sont là _que_ pour contourner un défaut de conception du langage. C'est précisément mon point.
Que parfois tu es obligé de rompre les normes de codage pour une raison quelconque.
C'est que ces normes ne sont pas bien conçues.
Aéris , dans le message <4dfd083b$0$6992$426a74cc@news.free.fr>, a
écrit :
Ben dans ce cas ça te coûte 2 lignes et 1 commentaire…
Qui ne sont là _que_ pour contourner un défaut de conception du langage.
C'est précisément mon point.
Que parfois tu es obligé de rompre les normes de codage pour une raison
quelconque.
Aéris , dans le message <4dfd09b9$0$26179$, a écrit :
Elle est conditionnelle à la compilation à cause de quoi ?
Parce qu'on veut qu'elle le soit.
C'est juste une idée farfelue de plus des développeurs C/C++.
Non, c'est parfaitement légitime. C'est au contraire toi qui essaies de changer les termes du problème pour les faire coller à ce que tu sais faire. Quand on n'a qu'un marteau...
Lui ne fait que télécharger un .so (rares sont ceux qui recompilent from scratch)
C'est faux.
D'autant plus que là tu ne mentionnes qu'une seule dépendance optionnelle, quid du cas où il y en a plusieurs et où il existe donc potentiellement 2^n versions de la même lib ?
Oui. Pour le cas que j'ai cité en exemple, n est de l'ordre de 800, et chacune de ces options est nécessaire, pour des raisons diverses (licence, taille du code, incompatibilité mutuelles, etc.).
Aéris , dans le message <4dfd09b9$0$26179$426a34cc@news.free.fr>, a
écrit :
Elle est conditionnelle à la compilation à cause de quoi ?
Parce qu'on veut qu'elle le soit.
C'est juste une idée farfelue de plus des développeurs C/C++.
Non, c'est parfaitement légitime. C'est au contraire toi qui essaies de
changer les termes du problème pour les faire coller à ce que tu sais faire.
Quand on n'a qu'un marteau...
Lui ne fait que télécharger un .so (rares sont ceux qui recompilent from
scratch)
C'est faux.
D'autant plus que là tu ne mentionnes qu'une seule dépendance
optionnelle, quid du cas où il y en a plusieurs et où il existe donc
potentiellement 2^n versions de la même lib ?
Oui. Pour le cas que j'ai cité en exemple, n est de l'ordre de 800, et
chacune de ces options est nécessaire, pour des raisons diverses (licence,
taille du code, incompatibilité mutuelles, etc.).
Aéris , dans le message <4dfd09b9$0$26179$, a écrit :
Elle est conditionnelle à la compilation à cause de quoi ?
Parce qu'on veut qu'elle le soit.
C'est juste une idée farfelue de plus des développeurs C/C++.
Non, c'est parfaitement légitime. C'est au contraire toi qui essaies de changer les termes du problème pour les faire coller à ce que tu sais faire. Quand on n'a qu'un marteau...
Lui ne fait que télécharger un .so (rares sont ceux qui recompilent from scratch)
C'est faux.
D'autant plus que là tu ne mentionnes qu'une seule dépendance optionnelle, quid du cas où il y en a plusieurs et où il existe donc potentiellement 2^n versions de la même lib ?
Oui. Pour le cas que j'ai cité en exemple, n est de l'ordre de 800, et chacune de ces options est nécessaire, pour des raisons diverses (licence, taille du code, incompatibilité mutuelles, etc.).
Tonton Th
On 06/18/2011 04:04 PM, Aéris wrote:
Je parlais uniquement des ifdef/define qu'on trouve en début de .h pour éviter l'inclusion récursive.
Ailleurs oui, ils sont parfaitement utiles.
Bullshit.
-- Je cherche un nouveau travail... http://tboudet.free.fr/cv-thierry-boudet.pdf http://sigfood.dinorama.fr/
On 06/18/2011 04:04 PM, Aéris wrote:
Je parlais uniquement des ifdef/define qu'on trouve en début de .h pour
éviter l'inclusion récursive.
Ailleurs oui, ils sont parfaitement utiles.
Bullshit.
--
Je cherche un nouveau travail...
http://tboudet.free.fr/cv-thierry-boudet.pdf
http://sigfood.dinorama.fr/
Je parlais uniquement des ifdef/define qu'on trouve en début de .h pour éviter l'inclusion récursive.
Ailleurs oui, ils sont parfaitement utiles.
Bullshit.
-- Je cherche un nouveau travail... http://tboudet.free.fr/cv-thierry-boudet.pdf http://sigfood.dinorama.fr/
Tonton Th
On 06/18/2011 02:19 PM, Aéris wrote:
Et l'IDE est aussi là pour t'aider en te masquant le XML au final : http://blog.frankel.ch/wp-content/resources/top-eclipse-plugins-i-wouldnt-go-without/m2eclipse-overview-tab.jpg http://www.jussimononen.info/wp-content/uploads/2010/03/maven_pom_editor.png
Ça marche sur un lien RNIS, ce truc ?
-- Je cherche un nouveau travail... http://tboudet.free.fr/cv-thierry-boudet.pdf http://sigfood.dinorama.fr/
On 06/18/2011 02:19 PM, Aéris wrote:
Et l'IDE est aussi là pour t'aider en te masquant le XML au final :
http://blog.frankel.ch/wp-content/resources/top-eclipse-plugins-i-wouldnt-go-without/m2eclipse-overview-tab.jpg
http://www.jussimononen.info/wp-content/uploads/2010/03/maven_pom_editor.png
Ça marche sur un lien RNIS, ce truc ?
--
Je cherche un nouveau travail...
http://tboudet.free.fr/cv-thierry-boudet.pdf
http://sigfood.dinorama.fr/
Et l'IDE est aussi là pour t'aider en te masquant le XML au final : http://blog.frankel.ch/wp-content/resources/top-eclipse-plugins-i-wouldnt-go-without/m2eclipse-overview-tab.jpg http://www.jussimononen.info/wp-content/uploads/2010/03/maven_pom_editor.png
Ça marche sur un lien RNIS, ce truc ?
-- Je cherche un nouveau travail... http://tboudet.free.fr/cv-thierry-boudet.pdf http://sigfood.dinorama.fr/