Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Microsoft et Java

295 réponses
Avatar
Wykaaa
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

10 réponses

Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:10, Nicolas George a écrit :
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…

try {
doIt();
} catch (MyException e) { // Impossible
throw new RuntimeException(e);
}

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/

iQEcBAEBAgAGBQJN/Qg1AAoJEK8zQvxDY4P9Q3MH/AmwAtgzg5WUuMD3DqX4W34o
Gfls7/3uG19WUHdbhGpHw4gmkSFwcpJLMkZXA2uOEOL9Jy5JpbiRFVZArjYDKHIu
IdxvT3g0CTRWiBhoc//+zO4tcJL+CqInMh5+oWlK/TGySZ0TxgKKLci24rrZjs1z
r7CEPnwfxg4K3sm3AsvoNhwFJvcg1trGadzpwQSRXgzJmJIQrvSqMp8GfrCypEqG
W4OaHmqSz37hPKeq3d0S51VCIfe2ThSQySq1wuF1Wsx1TyBKTvRhJ7qJj5E6BxrK
YR2eLejMA9QqtuodorSArXdsUm9wAR6YbLBRKjSHNQuktQ27sEZtMFYrJ1cZR84 újt
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:12, Nicolas George a écrit :
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/

iQEcBAEBAgAGBQJN/Qm5AAoJEK8zQvxDY4P9fRUH+wXHU5/m7mCXTtJuuOMhXi/s
mSRe2gDYb8j0ZOIYt/FFbAgZj1dbu1Lz1t/cH5eUq+j2VQyQ58Jxm7H16qPpiSHT
28gp8ibi3vO8ibZKm0ogBbFd76HklPKblz+C0nQoCir2jj9pj/WBadbawwS5IsP0
DbISHttp/7tCbVXbdv928SGsp6O+epfrWmxhuP1wyM8dj826lEh4p33Oi+EAArFB
qCrZXtXzh89YhYB6FiV2xHEc3Y8fNuL01vtARkWJ0UUKTvp8uWsKUFFyzzVgmUOi
2pM4Z2gr14clVj4LTHHBxTSV25IcHZ2FhMsp1IpyVqMTQpN4T/CC44y8emnY3Tg =elZs
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:19, Tonton Th a écrit :
C'est pas un peu lourdingue pour piloter 4 flux MIDI et
deux entrées joystick ?



Lourdingue ? 100 lignes de code ?
Et le jour où tu veux 8 flux MIDI, 4 entrées joystick et 2 trackball ?

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/Qn+AAoJEK8zQvxDY4P9fr8H/3tz39TDJ8nyMqeb6dvAjw0t
c8DooGHCWUZD/DTnKX54bLKlRJSwbOhtigktCFu1zc7mV8HtW99zbdOATWwin9wN
Yabf7sxHQByqGZCS/vGCWq6eJYWJRLiiNi4DdDhbQJRky/rq4kbzUnEgI55hSwpo
ZtSAT6QKPIUgmYfFXyJ4R/D8x8eDtg5rDT8nthHXkNfU2MBaA3CSNVN8W2yfzcUg
1oies/MrP7IhgtL3/At7HPZkC0w8pxllIa+N9xIf+7Reeb/bWIaVrchMukVeApo+
1pt5n5I0t2ukaUhi5+cR8iVwl2IOe+l8MmmpoaCDbz6/q1oVVoRFZBc7QeDIL5o Ë5t
-----END PGP SIGNATURE-----
Avatar
Tonton Th
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.



struct un_contexte
{
int verbosity;
u_short prefered_port;
char dump_on_error;
}
struc un_contexte contexte;

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/
Avatar
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.
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:26, Tonton Th a écrit :

struct un_contexte
{
int verbosity;
u_short prefered_port;
char dump_on_error;
}
struc un_contexte contexte;



class Context {
Level verbosity;
short preferedPort;
boolean dumpOnError;
}

class Foo {
@Resource
Context context

doFoo() {
if ( context.verbosity > LEVEL.INFO )
doBar();

}
}

En quoi est-ce différent de mon code ?
Sinon que je n'ai aucune variable globale =) ?

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/QvcAAoJEK8zQvxDY4P9zFkIAIxyBx4fCFU9oMd6pbz8C7pw
KVpaHuhA6GMGMBGFPBYugM/JyA3zghebcIby3lg+YqSprPRv2ppdcRUtC+wW4pD2
Xq3pwRhHZtEm2gnvbgrwf3Sq1bImo62POg8ulrUD0wJLQmtrEZOMLERZdFaKsWvf
Gu2K85MRteAFO4qifLdg8wDA6H+Hcbj9/3opvlKIG6rftWky0nmtavpnYuMZ9LfW
/rKosg+OZGvsEN7G5EhkL3jsontpo1EJLuMpcGTi2rYZ/NOA00wxyM3zSzE/vqya
mB80/JxEy3EOtjmX5zTXTZ9lTpYRSqrzjVq+6FP9SYI3XfT5IMWb7Dzi4LBjaFo {Bq
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:27, Nicolas George a écrit :
C'est que ces normes ne sont pas bien conçues.



Ou qu'elles sont là comme lignes directrices, pas comme mur infranchissable…

Comme par exemple la limite cyclomatique à 10, rarement tenable sur les
parseurs et autres générateurs de fichiers.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/Qz5AAoJEK8zQvxDY4P9POsH/RyaKnsuLH7nvBl2XOyf+cLF
azJ/Si2CgKWXV/wEBA7JbQfBXB9MYDLFs7ribjF2yLUFR2xKFhS34PS9zNlPVtT8
QWjr/T4jtaS48mCM9CDoKmnfeY3WJ/iayqInAhGRxRkH8CxErULVBGHjoypoukhX
CQ0okh7qGom/nG4Ua6914itiBY1arNcJkUB+XaHnkokLotu9sdInRQ1pcbjfx7a3
reu2/MK7+mr+QfSJkk3TZNwkQz7dNt2JfthDsRGo1qcWjADGeBjiJ2IW5LtpxpZB
EWLsPCvNTeQwLn8xLw8aiQkhyGO40IlOKp0cQy12aUzTMujbD3YEntFbN7cGIQU =oQWh
-----END PGP SIGNATURE-----
Avatar
Nicolas George
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.).
Avatar
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/
Avatar
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/