Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [c++] [oop] Convenzione tra i nomi delle variabili della classe e dei metodi

    ragazzi mi stavo chiedendo quale potesse essere un buon metodo per non genere confusione ( o almeno se esista una convenzione ) tra le variabili..

    faccio un piccolo esempio:

    codice:
    class Persona{
    public:
        Persona(int _altezza){altezza=_altezza};
    private:
        int altezza;
    };
    come vedete nel costruttore per impostare l'altezza non avrei potuto scrivere Persona(int altezza) cioè senza underscore, perchè credo avrebbe generato confusione...

    voi come ovviate a questo probleam?

    thanks

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    In java si farebbe così (riporto però il codice con la sintassi del C++)

    codice:
    class Persona {
    	public:
    		Persona(int altezza) {
    			this -> altezza = altezza;
    		};
    
    	private:
    		int altezza;
    };
    quindi sia il parametro del costruttore sia l'attributo membro della classe hanno lo stesso nome, solo che il puntatore this elimina qualsiasi ambiguita. Una delle poche convenzioni stilistiche di Java che apprezzo.

    La cosa funziona anche in C++, ma non so se esistono convenzioni diverse per questo linguaggio. Aspetta qualche altro parere, di shodan o altri.
    every day above ground is a good one

  3. #3
    in effetti this viene usato credo in tutti gli ultimi linguaggi...

    però visto che c++ da la possiiblità di accedere agli attributi della classe senza scrivere ogni volta this preferisco non metterlo...


    casomai uso una mia convenzione....

    per gli attributi della classe metto sempre l'underscore... per tutte le variabili temporane dei metodi le scrivo normalmetne cosi mi sembra sia abbastanza chiaro


    Codice PHP:
    class Persona {
        public:
            
    Persona(int altezza) {
                
    _altezza altezza;
            }

        private:
            
    int _altezza;
    }; 

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non c'è una vera e propria convenzione nella sintassi. La cosa importante semmai è sceglierne una e seguirla sempre, sia essa ungherese, con underscore, alla java etc.
    Il discorso ovviamente cambia se non si lavora da soli.
    Io ho cambiato la mia (con undescore) dopo aver letto questo articolo:

    http://www.eptacom.net/pubblicazioni/pub_it/iso_10.html

    Adesso li uso così ( a volte) :
    variabile__ // privata
    variabile_ // protetta
    variabile // pubblica
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Originariamente inviato da shodan
    Non c'è una vera e propria convenzione nella sintassi. La cosa importante semmai è sceglierne una e seguirla sempre, sia essa ungherese, con underscore, alla java etc.
    Il discorso ovviamente cambia se non si lavora da soli.
    Io ho cambiato la mia (con undescore) dopo aver letto questo articolo:

    http://www.eptacom.net/pubblicazioni/pub_it/iso_10.html

    Adesso li uso così ( a volte) :
    variabile__ // privata
    variabile_ // protetta
    variabile // pubblica
    grazie quel documento in effetti spiega proprio quello a cui io mi stavo riferendo

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Personalmente ti consiglio di spulciare bene quel sito. E' una vera miniera.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  7. #7
    Per quello che può valere, la convenzione che uso di solito è:
    • indentazione stile ANSI con quattro spazi (no tabulazioni);
    • nomi di classi, namespace, metodi, parametri di funzione, campi pubblici e funzioni "sciolte" in PascalCase;
    • nomi di campi e strutture private in camelCase.

    L'idea di base è che la roba "pubblica" sia in PascalCase, la roba "privata" in camelCase. Per cui:
    codice:
    namespace MioNamespace
    {
        void UnaFunzione(int PrimoArgomento, char * SecondoArgomento);
        
        class UnaClasse
        {
          private:
            // Campi privati
            int campoIntero;
            int campoDouble;
    
          public:
            // Interfaccia
    
            // Costruttore
            UnaClasse(int CampoIntero, double CampoDouble)
            {
                SetCampoIntero(CampoIntero);
                SetCampoDouble(CampoDouble);
            }
    
            // Getters/setters
            // campoIntero
            int GetCampoIntero() { return campoIntero; }
            void SetCampoIntero(int CampoIntero);
            {
                validaCampoIntero(CampoIntero);
                campoIntero=CampoIntero;
            }
    
            // campoDouble
            double GetCampoDouble() { return campoDouble; }
            void SetCampoDouble(double CampoDouble)
            {
                campoDouble=CampoDouble;
            }
    
          private:
            // Metodo utilizzato internamente per validare campoIntero
            void validaCampoIntero(int CampoIntero)
            {
                if(CampoIntero==0)
                    throw std::invalid_argument("CampoIntero non può essere 0.")
            }
        };
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Io ne uso una derivata da...
    MacApp
    http://en.wikipedia.org/wiki/MacApp

    Essenzialemente i seguenti prefissi per enfatizzare lo "scope" delle variabili:
    • "g" per le variabili globali;
    • "the" per gli argomenti di funzione;
    • "a" per le variabili locali;
    • "f" per le variabili membro;
    • "fg" per le variabili membro statiche;
    • "s" per le variabili statiche;


    In ogni modo ti devi abituare a muoverti in codici che hanno le proprie convenzioni ed anche nessuna ;-)

  9. #9
    Originariamente inviato da MacApp

    • "the" per gli argomenti di funzione;



    dimmi che non lo fai....

  10. #10
    "the" è proprio brutto...
    Ma brutto brutto brutto! :glisvizzeri:
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.