Merci pour l'eclaircissement, je crois que je vais passer a c# alors
(joke)
et bon courage!
Merci pour l'eclaircissement, je crois que je vais passer a c# alors
(joke)
et bon courage!
Dans ce cas, essaye au moins d'obtenir qu'ils n'utilisent pas ce qui se trouve dans le namespace Microsoft.VisualBasic, et qu'ils fassent tout en Option Explicit + Strict.Envoyé par Babylon
Sinon les mauvaises habitudes données par le VB sont toujours là. C'est déjà crade pour du procédural, mais pour de la POO ça peut devenir carrément monstrueux (en plus de donner du code VB-only, absolument pas portable si un jour béni arrive où ça pourra passer au C# :)
Ah, pour le using (la version non-équivalente d'Import), ce n'est pas qu'une facilité d'écriture, c'est une grande aide pour une gestion de ressources propre, qui est généralement zappée en VB.NET.
Parce qu'utiliser using en C# est ultra-simple, il n'y a aucun problème à l'utiliser partout où c'est possible. Donc aucun problème à s'assurer que les ressources sont toujours libérées dès que possible, bref que tout ça soit vraiment propre. L'équivalent en VB.NET étant de tout encastrer dans des blocs Try/Finally + appel manuel à Dispose, c'est beaucoup trop lourd pour être utilisé en pratique.
C'est pas mortel, le garbage collector passe derrière de toute façon, c'est juste bien moins propre et pratique.
Mais bon, si tu n'as pas le choix, tant pis, VB.NET ce sera. Du moment que Microsoft.VisualBasic est banni et que Option Explicit et Strict sont activés.
J'suis pas d'accord. Try/Finally plus lourd que Using ? C'est ton aversion pour VB qui te fait parler làEnvoyé par Maniak
Entièrement d'accord sur ce point.Envoyé par Maniak
Je citerais quand même quelques points à l'avantage de VB :
With / End With
Le code VB est (avis personnel souvent partagé) un peu plus facile à (re)lire...
Arguments optionnels
question lisibilité de langage ça dépend du background de chacun :
pour prendre mon expérience personnelle, j'ai fait du C, du C++, un peu de java et pas mal de PHP, ce qui fait que pour moi la syntaxe du C# est nettement plus lisible (habitude) qu'un langage de type verbeux comme VB.
With / end Width : c'est quelque chose que je n'aime pas du tout, ça doit aussi venir du background
Arguments optionnels : du point de vu de la POO ce n'est pas mieux de faire une "surcharge" (encore une fois je ne suis pas sûr d'utiliser le bon terme) de méthode ?
Oui ok, c'est une question d'habitude. Mais en étant tout à fait objectif, VB est plus lisible. En régle générale les trucs du genre [Sub / End Sub], [If / Else / End if], etc...permettent de plus vite s'y retrouver dans un code complexe et inconnu. T'as qu'à supprimer l'indentation pour t'en convaincre.Envoyé par Babylon
![]()
Ben pourtant, bonjour l'économie de frappe dans beaucoup de cas...Envoyé par Babylon
J'aime mieux ça que le copier/coller, et que le chercher/remplacer quand par malheur le nom de l'objet change pour une raison ou pour une autre.
Je ne suis pas certain que cette question soit du ressort des principes de POO.Envoyé par Babylon
Dans la pratique, les arguments optionnels sont un confort, rien de plus.
En C#, tu vas surcharger tes méthodes autant de fois que nécessaires, chaque méthode copiera les paramètres dans des variables de class et appellera une méthode "finale"...
En VB tu n'écris qu'une seule méthode...c'est un poil plus léger.
Euh non, vraiment pas :)Envoyé par Keihilin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 using ( Toto toto = new Toto() ) { ... }Non seulement c'est plus lourd (lourdeur innée de la syntaxe VB :), mais surtout, ça oblige à appeler Dispose à la main. Faut y penser. C'est pas forcément gagné :)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Try Dim toto As Toto = New Toto() ... Finally toto.Dispose() End Try
Avec using, on n'a plus à y penser, et tout ce ki réduit ce à quoi il faut penser est sacrément positif :)
Beurk. S'il y a de gros blocs qui nécessitent l'emploi de With, ça indique le besoin d'une méthode. Si ce sont de petits blocs, ça gêne la lecture plus qu'autre chose.Envoyé par Keihilin
Autre avis personnel souvent partagé : oula non, c'est tellement verbeux que c'est extrêmement lourd à lire :)Envoyé par Keihilin
L'overloading est fait pour ça dans un contexte OO. Les arguments optionnels sont un reste de programmation procédurale :)Envoyé par Keihilin
je pense qu'il serait bon d'arrêter là, sinon ça va repartir comme au début de la discution.
Euh non, vraiment pas :)Envoyé par Keihilin
Y a pas d'objectivité là-dessus. C'est du 100% subjectif :)
Quand je dis que pour moi la syntaxe du VB est beaucoup moins lisible, c'est vraiment ce que je pense hein, pas pour le plaisir de critiquer VB. Et je ne suis pas le seul dans ce cas :)
C'est très certainement une question d'habitude, et la syntaxe du VB est très certainement plus facilement compréhensible pour quelqu'un qui vient de débarquer en programmation. Maintenant à moins que ce quelqu'un veuille rester au stade de débutant, c'est pas quelque chose qui devrait le refroidir (surtout quand on y gagne en clareté après, ça aussi c'est subjectif mais ça ne m'empêche pas d'en être totalement convaincu :)
J'adore entendre parler d'économie de frappe avec la syntaxe du VB, t'as pas idée à quel point ça a tendance à me plier de rire instantanément :)Envoyé par Keihilin
Et donc cf mon précédent post pour ce point.
Les arguments optionnels signifie qu'une même méthode pourrait répondre à plusieurs interfaces. Ça ne cadre pas. Ça implique aussi que les méthodes avec paramètres optionnels doivent tester si tel ou tel paramètre est présent ou non. Super le confort.Envoyé par Keihilin
À ne pas confondre avec les paramètres par défaut comme en C/C++. Dans ce cas-là, les paramètres sont toujours là, il n'y a pas de traitement particulier à faire.
Ce n'est pas du ressort de la PO. C'est du ressort de la (non-)propreté du code :)
Vi, et la méthode finale saura que tous les paramètres sont bien présents, sans avoir à faire de cas particuliers pour ça. Ce qui est bien plus propre. 1 méthode = 1 façon de l'appeler.Envoyé par Keihilin
Enième facilité syntaxique qui pousse dans la direction des mauvaises pratiques :)Envoyé par Keihilin
Blablabla...Mais quelle mentalité d'assisté ! J'y crois pas !Envoyé par Maniak
![]()
![]()
Mauvaise fois évidente du CSharpFanatiste (oui, j'fais des néologismes si j'veux !)Envoyé par Maniak
![]()
Tu trouves que ça gêne la lecture ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 With myObject.mySubObject .Property1=1 .Property2=2 ... End With
Je pense que c'est juste une faute de frappe de ta part. Tu voulais écrire "ça facilite la lecture en aérant le code", mais tes doigts ont dérapé...T'excuse pas, je t'accorde le bénéfice du doute.![]()
Bon, on va arrêter de débattre sur ce point précis, s'agissant définitivement d'une question de goûts et de couleurs (et de myopie avancée pour ceux qui trouve le code VB illisible)Envoyé par Maniak
Je ne vois pas en quoi les arguments optionels iraient à l'encontre des principes POO ?!Envoyé par Maniak
J'suis sûr que si C# les avaient mais pas VB tu trouverais ça très bien ! Hein ?! Avoue !![]()
Ben que ça reparte...Un bon débat inutile entre gens de bonne compagnie, ça nous change du HelpDesk !Envoyé par Babylon
moi je dis ça, je dis rien.
pour les params optionnels, comme l'a dit Maniak, c'est bon pour le procédural pas pour la POO, sinon l'overloading n'aurait pas été mis en place.
et pour ce qui est de la lisibilité, je le crie haut et fort : LE VB EST ILLISIBLE (enfin pour moi)
C'est un des principes auxquels je m'efforce de tenir le plus :)Envoyé par Keihilin
Y a suffisamment de choses à gérer pour ne pas s'encombrer de trucs inutiles :)
Ah pi j'avais oublié un autre défaut du Try/Finally : les exceptions c'est gentil, mais c'est pas super performant :)
Non non, ça c'est un principe de POO (enfin plutôt un principe de refactorisation, j'ai tendance à relier les deux :).Envoyé par Maniak
Plein de lignes de suite passant par des accesseurs à un objet -> méthode à ajouter dans la classe (surtout quand il s'agit de copier les champs etc :)
Et oui, je trouve moins lisible d'avoir des .BlaBla que d'avoir le nom de l'objet juste devant. Bien plus clair comme ça, et intellisense & co ne sont pas faits pour les chiens. Y a jamais besoin de taper le nom complet chaque fois, alors le gain en temps de frappe est discutable :)
(là je suis aidé, j'ai Visual Assist pour faciliter grandement l'écriture de code :)
Et oui, c'est encore un point subjectif, donc là on peut éviter de rallonger le topic pour rien, ça a quand même peu d'importance (même si les gens sensés peuvent argumenter que la syntaxe illisible du VB ne nécessite même pas de débat :)
1 méthode = 1 forme d'appel :)Envoyé par Keihilin
J'aimerais beaucoup que le C# aient les paramètres par défaut oui. Mais les paramètres optionnels, qu'ils restent dans le VB et qu'ils meurent avec :)Envoyé par Keihilin
Surtout dans des journées comme aujourd'hui :)Envoyé par Keihilin
Ouais, je ne peux qu'être d'accord. La synthaxe C# est beaucoup plus légère. Alors justement, les trucs comme With/End With qui permette à VB d'alléger un peu la sienne c'est du tout bon...Envoyé par Maniak
Euh...faux ! CF : Point suivantEnvoyé par Maniak
Ben ça tombe bien que t'en parles, parce qu'un paramètre optionnel en VB.net ça s'utilise comme ça :Envoyé par Maniak
et l'indication d'une valeur par défaut est OBLIGATOIRE !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public Sub DoSmth(ByVal p1 As String, Optional p2 As String = "ABC") ... End Sub
Donc elle est où la différence avec les paramètres par défaut du C++ ?
j'aurais jamais du dévérouiller le thread![]()
Bon moi aussi je m'y remet, car je vois que quand même je ne suis pas le seul à trouver le VB.NET plus lisible que du C# !!!!
Déjà ne serais ce que pour attacher une méthode à un events:
en VB.NET :
En C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Sub rechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rechercher.Click
au chargement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.DataGrid1.ItemCommand += new System.EventHandler(this.DataGrid1_ItemCommand);
et
en gros j'ai 50 évènement à gérer je me retrouve avec 50 lignes de déclarations d'évènement au chargement et aprés toutes mes méthodes !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public void rechercher_Click(System.Object sender, System.EventArgs e) { }
Je veux bien que les puristes veuillent que tous les évènement soit déclarés avant le chargement, mais bon niveau lisibilitée, je vois pas en quoi le C# devient plus lisible ici
Aprés qu'on me dise que VB.NET est plus "verbeux" soit, mais bon quand on a vs.net et des variable bien nommées, on fait
et on va chercher ce dont on a besoin avec l'intelisense
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.
Les try catch et finaly, tu tape try, t'appuis sur la touche entrer et tout le squelette se fait tout seul.
Toujours au niveau lisibilitée, prennons 2 extraits de code VB.NET et C#
VB.NET
C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 End Try End IF End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 } } }![]()
Donc VB.NET plus verbeux OUI, mais compensé par l'intellisense quand on a un bon IDE et With/End with. Mais dire que c'est moins lisible c'est de la mauvaise fois![]()
Attend voir, j'ai cru voir marquer "Forum de discussions" quelque part par ici...Envoyé par neo.51
![]()
Ah ben oui, c'est bien ça...c'est pas marqué "forum de helpdesk", alors on va pas commencer à vérouiller les débats. fussent-ils complètement inutiles comme celui-ci, mdr !
Ben oui c'est évident...Envoyé par neo.51
Bon, moi j'ai résolu le problème du choix du language, je code directement en MSIL. 8)![]()
Je crois aussiEnvoyé par neo.51
![]()
Envoyé par neo.51
Pour moi aussi, c'est moins lisible!
Rien ne sert de continuer sur des palabres qui ne menent nul part! Certaines personnes préfèrent lire du VB d'autres (J'en fait parti) le C#, c'est un fait et personne n'y changera rien!
C'est un peu comme les goûts et les couleurs. Et croyez-moi coté couleurs, je m'y connais, je suis daltonien!!![]()
Le principal est de bien structurer son code, c'est tout.
Envoyé par Keihilin
![]()
Ouais...Je trouvais le C# beaucoup trop verbeuxEnvoyé par freegreg
mdr.
Non, c'est vrai, les discussions sur la lisibilité c'est une question de goûts.
D'autre part, les petits points de "facilité" comme le With/End With sont largement gommés par le confort apporté par Visual Studio.
Maintenant dans la pratique, je pense que le débat peut s'orienter dans 2 directions :
1. Je suis un développeur, je veux me mettre à Dotnet, quel langage choisir ?
2. Je suis un chef de projet, je dois démarrer un développement, quel langage choisir ?
Au 1., je répond sans hésiter : les deux !
Les principales difficultés dans le passage à .net résident dans l'apprentissage de la POO (si on ne connait pas déjà), et des centaines de classes offertes par le framework.
Alors une fois que c'est fait, commencer par C# et passer à VB ou l'inverse, c'est l'histoire de 2 jours...
Je suis consultant, développeur freelance. Des projets, j'en vois passer un certain nombre au cours d'une année, et même au sein d'une même société, il n'y a pas toujours de choix définitif pour un langage ou l'autre...Un jour c'est VB, le suivant c'est C#...Devant un recruteur qui ne s'y connait pas, pouvoir dire qu'on code indifféremment avec l'un ou l'autre est important.
Pour le point 2.
Je ne vois pas la nécessité d'imposer un langage. L'important est de pouvoir réutiliser les briques applicatives...alors qu'elles soient en VB ou en C#, quelle importance ?
Ou du moins mauvais :)Envoyé par Keihilin
(ok j'arrête :)
Tiens, c'est nouveau de VB.NET ça ?Envoyé par Keihilin
Bon ben si c'est bien comme ça, on peut donc résumer que les paramètres optionnels de VB6- sont à jeter, et dans VB.NET, malgré la syntaxe toujours aussi lourde, c'est un point positif :)
(et que les paramètres par défaut sont bien un des trucs qui manquent le plus au C#, sans raison en plus, grmpf :)
Pas plus lisible non, plus utilisable. Permettant de voir rapidement tous les événements gérés, de qui, par quoi, ainsi que d'y affecter des gestionnaires d'événements d'autres objets. Parce que là, VB.NET repasse sur une syntaxe proche de celle du C#, mais en plus lourd :)Envoyé par neo.51
En C#, c'est clair et net, tout se fait pareil, au même endroit, sans forcer à chercher dans tout le code pour voir où est géré tel événement :)
Les noms de variables ne dépendent pas du langage, donc c'est pas un problème :)Envoyé par neo.51
Et c'est toi qui parle de mauvaise foi ? :)Envoyé par neo.51
Sans indentation 1) aucun langage n'est lisible, 2) c'est du code de merde (et ça c'est indiscutable hein :), bref c'est totalement hors de propos :)
Et si tu y mets de l'indentation, repérer des accolades bien alignées est bcp plus rapide et clair que de chercher des mots-clefs.
Mais on retombe sur l'habitude et les goûts persos, donc basta :)
Mais bon, sacrée mauvaise foi de ta part sur ce coup-là, honte sur toi :)
On a tous notre passif de programmeur, franchement la "lisibilite" c'est vraiement un parametre personnel, le but c'est juste d'accepter le fait que d'autres pensent pas comme nous et que personne ne possede la verite vraie unique.
En resume : retournez bosser ! ()
Ben tiens, hier soir je me suis amusé à faire un petit test de "productivité" pour comparer C# et VB.net...
Principe de l'exercice : Ecrire une petite bibliotheque de classes, d'abord dans un des languages en chronométrant, puis dans l'autre.
J'ai choisi un truc qui permettait d'utiliser un peu tout les types d'objets : des classes, des enums, des exceptions, des évenements...bref, j'ai écrit un p'tit DataAccessHelper introspectif.
- Pas de problèmes de "reflexion technique", étant un sujet moult fois abordé dans les projets.
- Mêmes nom de variables pour les deux projets.
C# : 25mn
VB.net : 18mn
Ce qui est drôle, c'est qu'avant de commencer j'imaginais plutôt un résultat inverse. D'expérience je pensais bien que ce serait très proche, mais je voyais la balance pencher en faveur de C#.
A quoi c'est du ? Ben à Visual Studio, tout simplement.
L'auto-completion est plus présente avec VB, l'insertion des fin de constructeur automatique est un réèl gain de temps par rapport au {} qui ne sont pas les touches qui tombent le plus naturellement sous les doigts sur un clavier...Sans parler des propriétés d'une classe...en VB.net, tu tapes une lignes et VS te complète toute la structure...Vu que généralement y en a beaucoup des propriétés...
Donc, malgré sa synthaxe plus {lourde | verbeuse }, VB.net semble quand même plus productif, du moins avec Visual Studio. Il faudrait voir avec d'autre IDE si cela reste vrai.
pour ce qui est des accolades je n'ai pas ce genre de problèmes vu que sur les claviers Azerty belge on les a avec altgr 9 et 0.
PS : et non je ne suis pas belge
Partager