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

Langage Java Discussion :

[Debat]case sensitive : pourquoi faire ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut [Debat]case sensitive : pourquoi faire ?
    Bonjour,

    je suis en train de m'auto former à Java et ce faisant je découvre beaucoup de bonnes choses, nottament dans des contraintes de programmation assez strictes mais qui permettent d'éviter des erreurs plus tard ce qui me plait beaucoup.

    Je dirais donc que Java est un language qui essaye au maximum d'interdire les opérations/manières de coder potentiellement dangereuses et les remplace par des "best practices" éprouvées.

    Par contre il y a a mon avis des parties de java qui vont complètement à l'encontre de cette philosophie et nottament le fait que Java soit Case sensitive pour les noms de variables et les noms de fonctions.

    Ma question est simple : y a t'il une UTILITé à cela ?

    Alors je précise :
    je ne demande pas une réponse du genre "parceque sous unix c'est case sensitive et java viens plus ou moins d'unix donc c'est comme ça"
    c'est sans doute une réponse valable mais si c'est la seule raison alors je dirais : ils auraient du rendre Java insensible à la casse.

    une autre réponse que j'ai reçue c'est "parceque il y a le type primitif integer et le type objet INTEGER" => exemple parfait de pouquoi cette sensibilité est une source potentielle d'ennuis. il suffit d'oublier une fois la case ou d'etre en train d'apprendre le language pour pouvoir oublier / confondre deux choses différentes mais pourtant présentées de façon très semblables.
    De plus un préfixe aurait bien mieux rempli cet office ex : integer et obj_integer

    pour ma part je ne vois aucune justification à ça, je n'imagine pas devoir un jour écrire une fonction CalculPaye() et une autre calculpaye() qui agirait autrement, pourtant c'est possible ds un language case sensitive.

    autre argument parfois avancé : c'est pour forcer à respecter les normes de nommage
    Je ne pense pas que ce soit une réponse valable étant donné qu'on est à aucun moment OBLIGé de respecter les normes, si je veux faire une fonction CalCuLpAyE() je peux le faire, et je peux en plus faire une fonction CaLCULpaye() ce que je ne pourrais pas faire dans un language case insensitive => le case insensitive est bien moins source d'erreur puisque une fois la fonction / variable crée il ne peut y en avoir d'autre du même nom.

    Le seul argument que je peux imaginer c'est un argument de performance, qu'il serait plus simple / rapide d'utiliser ce mode,mais
    1- je ne sais pas lequel serait le plus rapide mais je *crois* que ce serait plutot le case insensitive
    2- je *crois* encore que la différence de perfs serait mini mini, du genre complètement indétectable à l'exécution.

    merci d'éclairer ma lanterne sans trop me taper dessus, j'apprends et je me pose des questions

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    lol qu'est ce qu'on peut se poser comme question des fois ^^

    mais c'est bien de s'interroger

    Je dirais que c'est juste pour une meilleure lisibilité, tu peut tout de suite voir qu'est ce qui est une classe, une varialbe, une méthode, bon faut bien sur respecter les conventions pour ça, mais bon. Et aussi pour plus de souplesse, tu peut appeler une classe Calcul et l'instancier en calcul.

    Mais ce ne sont que mes propres dires... Je connais pas la vraie raison qui a poussé les programmeurs a rendre java case sensitive !

    Je trouve personnelement que c'est une très bonne chose que ce language soit case sensitive

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut
    Citation Envoyé par wichtounet
    Je dirais que c'est juste pour une meilleure lisibilité, tu peut tout de suite voir qu'est ce qui est une classe, une varialbe, une méthode, bon faut bien sur respecter les conventions pour ça, mais bon.

    Je trouve personnelement que c'est une très bonne chose que ce language soit case sensitive
    D'abord merci de ta participationensuite si je peux me permettre tu mélanges 2 choses : les conventions de nommage et le case sensitive et donc tu évites tout à fait la vraie question.

    pour le dire autrement : il n'y a pas besoin d'etre case sensitive pour avoir des conventions de noms donc tu ne peux pas prendre comme "excuse" les conventions de noms pour dire que le case sensitive c'est bien.

    encore autrement : dans le language non case sensitive que j'utilise je mets quand même les noms de constantes en Majuscules : c'est une convention de nommage.
    Par contre si j'oublie que j'ai une constante NBR_CLIENTS et que j'essaye de déclarer nbr_clients ça ne passera pas et donc le compilateur m'indiquera tout de suite mon erreur, en java ça passe, c'est donc une porte ouverte à plein de distractions / erreurs / bugs difficiles à trouver.

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Rincevent76
    D'abord merci de ta participationensuite si je peux me permettre tu mélanges 2 choses : les conventions de nommage et le case sensitive et donc tu évites tout à fait la vraie question.

    pour le dire autrement : il n'y a pas besoin d'etre case sensitive pour avoir des conventions de noms donc tu ne peux pas prendre comme "excuse" les conventions de noms pour dire que le case sensitive c'est bien.

    encore autrement : dans le language non case sensitive que j'utilise je mets quand même les noms de constantes en Majuscules : c'est une convention de nommage.
    Par contre si j'oublie que j'ai une constante NBR_CLIENTS et que j'essaye de déclarer nbr_clients ça ne passera pas et donc le compilateur m'indiquera tout de suite mon erreur, en java ça passe, c'est donc une porte ouverte à plein de distractions / erreurs / bugs difficiles à trouver.
    Bien sûr que tu peut te permettre ^^ car en plus tu as raison, case sensitive ou pas, les conventions de nommage seraient là. Alors je ne vois plus qu'un seul avantage, celui d'avoir un plus grand nombre de méthode et de variables possibles.

    Pour avoir la véritable réponse, il va te falloir remonter jusqu'à la source de la vie... euh plutot la source du java, je m'égare là ^^

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    La comparaison en case-sensitive est bien plus performante, puisqu'elle ne se base uniquement sur le code des caractères et non pas sur une logique totalement arbitraire : pourquoi 'A' (65) serait égal à 'a' (97) ???
    Et si on commence à prendre les caractères accentué et autres caractères spéciaux on ne s'en sort plus (je rappelle que les fichiers *.java peuvent utiliser différents types d'encodage).



    Personnellement je ne vois pas de raison d'utiliser le mode case-insensitive, qui est pour moi plus une source d'erreur potentielle qu'autre chose, et augmente les risque de confusion...


    Bien sur le fait d'utiliser du case-sensitive ne veut pas dire qu'on doit en abuser en nommand tout de la même manière...

    a++

  6. #6
    Membre expérimenté Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Par défaut
    Citation Envoyé par adiGuba
    La comparaison en case-sensitive est bien plus performante, puisqu'elle ne se base uniquement sur le code des caractères et non pas sur une logique totalement arbitraire : pourquoi 'A' (65) serait égal à 'a' (97) ???
    tout a fait d'accord.

    Rincevent76, je pense que tu n'as jamais essayer d'implémenter une comparaison case insensitive. Essaye et fait la meme chose en case sensitive, tu vas vite voir la différence à mon avis

  7. #7
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    Je pense qu'il est plus rapide d'inculquer à quelqu'un des régles non obligatoires (regles de nommage en l'occurence) quand elles sont associées de pres ou de loin à des contraintes d'utilisation. Je ne sais pas (je ne pense pas) que ca soit la la raison du choix "des parents" de java de rendre le langage case sensitive, mais bon...
    En général, on commence à développer une appli bien propre, en essayant de respecter les regles de nommage... ensuite, ca se gate !
    Donc la, l'avantage, c'est qu'on a commencé par mettre ses variables en minuscules, ses constantes en majuscules, ses methodes en "maMethode", ses classes en "MaClasse"... et comme il faut garder les memes regles pour que ca fonctionne (case sensitive), on respecte les regles plus longtemps
    Ca parait peut etre bete, mais bon, je pense que c'est une bonne chose que java soit case sensitive. En partie pour cela et pour d'autres raisons egalement, qui font qu'au début c'est contraignant, et rapidement, c'est une habitude qui ne dérange pas, au contraire

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Par défaut
    Je pense que c'est essentiellement pour avoir une clarté dans le code. C'est toujours mieux pour s'y retrouver dans un code d'avoir exactement le meme nom d'une variable. Et je ne pense pas que
    Citation Envoyé par Rincevent76
    si je veux faire une fonction CalCuLpAyE() je peux le faire, et je peux en plus faire une fonction CaLCULpaye()
    soit très souhaité a faire meme si c'est possible...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut
    Citation Envoyé par e1lauren
    Je pense que c'est essentiellement pour avoir une clarté dans le code. C'est toujours mieux pour s'y retrouver dans un code d'avoir exactement le meme nom d'une variable. Et je ne pense pas que soit très souhaité a faire meme si c'est possible...
    c'est bien ce que je dis : pourquoi l'autoriser si ce n'est ni souhaitable ni nécéssaire ?

    cqfd

Discussions similaires

  1. [Oracle] Enlever le case sensitive???
    Par osmoze dans le forum Oracle
    Réponses: 21
    Dernier message: 18/07/2007, 10h40
  2. Pourquoi faire compliqué?
    Par Akhan dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 05/09/2006, 16h21
  3. Désactiver la case sensitive
    Par soad dans le forum NetBeans
    Réponses: 4
    Dernier message: 30/08/2006, 20h59
  4. [D7] MySQL Embedded avec Delphi, pourquoi faire?
    Par raoulmania dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/11/2005, 17h25
  5. Réponses: 4
    Dernier message: 15/04/2005, 13h19

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