IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB.NET n'est-il pas case sensitive ?


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut VB.NET n'est-il pas case sensitive ?
    Hello,

    Je viens de tomber sur un comportement qui me laisse perplexe...

    Soit la classe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Public Class frmStep2Demo
     
        Public Property CurrentUser As PROMO_BLL.User
        Public Property Step1 As frmStep1
     
        Private _cons As PROMO_BLL.Concessions
        Private _con As PROMO_BLL.Concession
        Public Property SelectedConcessions As PROMO_BLL.Concessions
     
        Public Sub New(user As PROMO_BLL.User, step1 As frmStep1)
     
            ' This call is required by the designer.
            InitializeComponent()
     
            ' Add any initialization after the InitializeComponent() call.
            CurrentUser = user
            Me.Step1 = step1
     
            SelectedConcessions = New PROMO_BLL.Concessions
     
        End Sub
    End Class
    En l'état, pas de souci. Par contre, si je modifie le constructeur comme ci-dessous, alors la propriété Step1 de ma classe n'est pas initialisée... Il ne fait que réaffecter le paramètre sur lui-même (rien quoi).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Public Sub New(user As PROMO_BLL.User, step1 As frmStep1)
     
            ' This call is required by the designer.
            InitializeComponent()
     
            ' Add any initialization after the InitializeComponent() call.
            CurrentUser = user
            Step1 = step1
     
            SelectedConcessions = New PROMO_BLL.Concessions
     
        End Sub
    Il me semblait pourtant que la casse était importante dans le nom des objets. Me serais-je fourvoyé ?

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    VB.Net est en effet insensible à la casse contrairement à C# (ce qui j'estime est une bonne chose ; distinguer des éléments juste par la casse me semble "dangereux")

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    VB.Net est en effet insensible à la casse contrairement à C# (ce qui j'estime est une bonne chose ; distinguer des éléments juste par la casse me semble "dangereux")
    Perso je trouve ça assez pratique pour différencier les membres private/protected (commençant par une minuscule) des accesseurs public (commençant par une majuscule).
    Cette sensibilité à la casse, ou plus précisément la rigueur qu'elle impose, peut également avoir son avantage quand on doit faire des replaces de masses en reprise de code.

    Désolé pour le HS

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Perso je trouve ça assez pratique pour différencier les membres private/protected (commençant par une minuscule) des accesseurs public (commençant par une majuscule).
    Pour des membres privés, je préfère les préfixer d'un underscore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private _variable As String

  5. #5
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Pareil, toutes mes variables de classes avec un Underscore en prefix, comme ça les paramètres et les propriétés publiques correspondants ont des jolies noms pour l'extérieur, et pas de mégarde à l'intérieur.

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Perso, les propriétés et les classes commencent par une majuscule. Les variables par une minuscule.

    J'ai testé le _ pendant un temps en essayant de me conformiser avec cette convention utilisée presque partout mais je trouve que ça alourdi fortement le code à la lecture.

    Perso, je trouve cela dommage cette insensibilité. Moi qui suis fort rigoureux (du moins je fais mon max pour l'être), je trouvais cela pratique... Cela m'aurait éviter d'avoir soit à alourdir mon code par l'utilisation de "Me." devant la propriété, soit de devoir modifier le nom du paramètre en input du constructeur. Des deux solutions, je n'en aime aucune et je choisis la première par dépit.

    D'ailleurs, y a un reste de mes tests avec _ dans l'exemple que j'ai donné ^^.

  7. #7
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Personnellement j'utilise aussi beaucoup l'underscore (et après une petite vérif c'est souvent ce que fait la BCL également [avec aussi le préfixe m_ parfois]) ça a l'avantage dans l'auto-complétion de trouver directement tous les champs en tapant juste l'underscore ; et personnellement je trouve pas vraiment que ça alourdit le code (par contre ça a l'avantage d'être clair pour tout le monde ; surtout quand ça m'arrive d'envoyer des bouts de code à quelqu'un d'autre [mail ou autre] et que pour une raison quelconque il est reçu en full minuscule )

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Certes.

    Mais quoi qu'il en soit, ici le problème se situe entre un nom de propriété (je crois que tout le monde est d'accord pour qu'il qu'une majuscule en début d'une propriété, c'est bien) et un nom de paramètre.

    Le paramètre n'est pas un champ privé donc pas d'underscore... Faudrait faire quoi du coup ? Donner un nom moins parlant au paramètre ?

  9. #9
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Je n'ai jamais ce genre de problème parce que sur les paramètres j'utilise le mot générique, pas le nom interne.

    Par exemple, ton premier paramètre, tu as mis User, que tu mets en interne dans CurrentUser, c'est logique: je demande un User, et moi j'en fais ce que je veux.

    Alors le deuxième pourquoi avoir mis Step1, plutôt que Step ?

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Pcq'il y a différent type de step et que là, c'est le type 1.

    Un user, ça reste un user. Je sais même pas pourquoi j'ai mis CurrentUser en fait vu que User est bien moins long à écrire ^^.

  11. #11
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Dans ce type de situation je m'embête pas trop soit je part du principe que c'est le seul moment où il peut y avoir une ambiguïté donc je préfixe avec Me. et puis c'est tout (et au besoin un With Me peut aussi aller)
    Ou à la rigueur comme on a quand même accès au "backing field" d'une auto-property (chose qu'on ne peut pas faire en C#) je m'en sers (mais le jour où il change la convention de nommage de ce champ ça sera drôle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub New (step1 As Foo)
        Me.Step1 = step1 'on lève l’ambiguïté
    End Sub
     
    Sub New (step1 As Foo, step2 as Bar, ...)
        With Me
            .Step1 = step1
            .Step2 = step2
            other = 42 ' on peut toujours mettre les autres "classiquement"
        End With
    Ens Sub
     
    Public Property Step1 As Foo
    Sub New (step1 As Foo)
        _Step1 = step1 ' on passe par le backing field
    End Sub

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bah au final, c'est ce que j'ai fait. Je préfixe par Me puis voilà.

    Mais c'est quand même super fourbe car en plus VS nous laisse la majuscule.

    Quand on code, habituellement il adapte automatiquement la casse de ce l'on écrit pour correspondre au nom des objets. Du coup, quand il a laissé Step1, je m'attendais à ce que ça référence la propriété et pas le paramètre.

    C'est où qu'on peut suggérer les améliorations pour VS ? J'vais devenir un contributeur de premier rang avec ça

  13. #13
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Moi il me corrige la majuscule....

    T'as peut être pas activé une option (Je suis en VS 2013)

  14. #14
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    pareil VS m'a toujours corrigé la casse des éléments et ce depuis VS2005 (ou 2003 j'ai un doute)

  15. #15
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    WTF ! Du coup je reteste et il corrige la casse... Pourtant c'était pas le cas tout à l'heure... Le copier-coller pour mon message du début vient directement de VS. Je pige pas...

    Dès que je trouve comment le reproduire, je vous le dis !

  16. #16
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    J'ai trouvé !

    Je démarre avec Me.Step1 = step1.
    Je retire le Me..
    Je fais ctrl + z.

    Et hop, j'ai Step1 = step1.

    Mais bon, cela veut donc dire que j'avais probablement d'abord écrit en préfixant. J'ai sûrement du le retirer en voulant alléger le code.

  17. #17
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    lu en diagonale, donc je vais peut être faire de la redite

    - dans certains cas VS ne fait pas la mise en forme de la ligne (selon comment on sort de la ligne, mais avec un entrée à la fin il s'occupe de la casse)

    - quand il y a une variable de membre (le cas des paramètres) qui a le même nom qu'une variable de classe, c'est la variable de membre qui est prioritaire
    donc soit me. soit renommer la variable

    je suis aussi partisan du _ et je n'hésite pas à modifier un nom de paramètre pour avoir une syntaxe qui s'en éloigne le plus si nécessaire (ajout d'un mot ou autre...) au moins ca saute aux yeux

    sachant qu'un des problèmes courant chez le développeur c'est de lire ce qu'on pense avoir écrit au lieu de lire ce qui est écrit, avoir une syntaxe qui saute aux yeux est pratique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Apache Windows n'est pas case sensitive !
    Par weabow dans le forum Apache
    Réponses: 4
    Dernier message: 10/11/2011, 16h28
  2. Réponses: 22
    Dernier message: 14/09/2010, 16h27
  3. [Oracle] Enlever le case sensitive???
    Par osmoze dans le forum Oracle
    Réponses: 21
    Dernier message: 18/07/2007, 09h40
  4. Réponses: 3
    Dernier message: 11/02/2005, 14h39
  5. [VB.NET] Le DataBinding en vb.net, c'est comment?
    Par Pleymo dans le forum ASP.NET
    Réponses: 11
    Dernier message: 04/02/2005, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo