Newsgroup: it.comp.lang.c
Titolo: Notazione ungara

Sapete dirmi cos'è o dove posso trovare informazioni su questo tipo di
notazione...
grazie
Davide Benassi
P.S. Per favore rispondete anche via e-mail
--
Davide Benassi
davide_...@bigfoot.com

 tipo di notazione...
  Intanto si chiama notazione *ungherese*, e non "ungara"... ;)
  E` un paradigma di denominazione dei simboli (variabili e costanti, ma
anche funzioni) in un sorgente di un programma che prevede un l'utilizzo
di un prefisso indicante il tipo del simbolo stesso sviluppato da un
tizio di origine ungherese. Ad esempio:
<CODE>
	int          iIntegerVar;
	unsigned int uiUnsignedIntegerVar;
	double       dDoubleVar;
	double       *pdPointerToDoubleVar;
</CODE>
  Non l'ho mai visto utilizzato da nessuno all'infuori dell'SDK di MS
Windows. Questo fatto dovrebbe essere *altamente* indicativo... ;)
	Alla prossima,
		Marco

Entro nella stanza e...cosa ti vedo ? sette lettini.
Su uno di essi c'era scritto Marco Natoni :
#  Non l'ho mai visto utilizzato da nessuno all'infuori dell'SDK di MS
#Windows. Questo fatto dovrebbe essere *altamente* indicativo... ;)
A dire il vero, Peter Norton spesso consiglia di utilizzare questo
tipo di notazione, utilizzando tre caratteri di prefisso (int, bln,
str, ecc...ecc...).
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
There is nothing better for understanding a kangaroo
than seeing it jump.
----------------------------------------------------

 prefisso (int, bln, str, ecc...ecc...).
  Bene, cio` non fa che rafforzare la mia idea sull'utilita` della
notazione "ungara". :)
	Alla prossima,
		Marco




Grazie a tutti quanti per le "preziose"informazioni,
ma č davvero cosě inutile ?
Davide

Entro nella stanza e...cosa ti vedo ? sette lettini.
Su uno di essi c'era scritto Davide Benassi :
#Grazie a tutti quanti per le "preziose"informazioni,
#ma č davvero cosě inutile ?
E' una questione riguardante lo stile di programmazione e per questo
prettamente riguardante i gusti di ogni singolo programmatore.
Si suppone che essa consenta una migliore lettura e comprensione del
codice, ma sinceramente io non scrivo "iIndice" o "intIndice", se
posso scrivere "Indice" e basta.


 ma è davvero così inutile ?
Secondo me in un linguaggio fortemente tipizzato come il C/C++ si, è
inutile.
EMG

inutile.
Credo che al piu` un numero molto limitato di prefissi e suffissi possa
ancora essere di aiuto, ad esempio la classica C o T per i nomi di tipo.
Io personalmente uso un insieme molto ridotto di regole:
1) Prefisso T per i tipi,
2) Suffisso Ptr per i puntatori
3) identificatori scritti nella forma TList TAssociativeArray,
utilizzando
    maiscole e minuscole per renderli piu` comprensibili
4) Nomi in inglese per uniformita` con il linguaggio di programmazione
e una due altre regole al massimo piu` che altro a carattere stilistico.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

ma č davvero cosě inutile ?
In C++ sicuramente, il sistema di tipi impedisce i classici errori
del C. Inoltre e` molto contorta e (IMO) genera nomi astrusi e
poco leggibili e comprensibili.


 ma è davvero così inutile ?
Citando C. Pescio  "C++ Manuale di Stile":
..."Hungarian è nata come supporto alla programmazione in un periodo
storico in cui nel linguaggio C non esisteva il type checking statico.
Per risolvere tale problema, la notazione usata espone direttamente
l'implementazione delle variabili: se una variabile ha tipo intero, il
suo identificatore inizierà per i: ciò aiutava il programmatore ad
evitare assegnazioni errate, ma oggi è soltanto una cattiva pratica di
programmazione, contraria ai principi di information hiding che
permeano il C++, il quale peraltro dispone di un type checking statico
che sicuramente non richiede l'esposizione dell'implementazione e lo
sforzo del programmatore. Pertanto, mentre si può considerare una
convenzione accettabile per il C, è ampiamente criticabile nel caso
del C++: se sostituite un intero con un enumerato, o con una classe,
dovrete cambiare nome a tutte le variabili che contengono tali
valori."

Entro nella stanza e...cosa ti vedo ? sette lettini.
Su uno di essi c'era scritto Paolo Marotta :
#Io personalmente uso un insieme molto ridotto di regole:
#1) Prefisso T per i tipi,
#2) Suffisso Ptr per i puntatori
Io invece, allo stesso modo, adopero il suffisso "_t" per i tipi e
"_p" per i puntatori.


Entro nella stanza e...cosa ti vedo ? sette lettini.
Su uno di essi c'era scritto Daniele Pallastrelli :
#sforzo del programmatore. Pertanto, mentre si può considerare una
#convenzione accettabile per il C, è ampiamente criticabile nel caso
#del C++: se sostituite un intero con un enumerato, o con una classe,
#dovrete cambiare nome a tutte le variabili che contengono tali
#valori."
E' vero.
In effetti anche per il C e' piuttosto fastidiosa.


		Marco

 bazzicava in fidonet?? se si, ben ritrovato!!! :)))
  Lo sono. E bazzico ancora. ;)
	Alla prossima,
		Marco

(Omissis)
Non sono certo un fan della "Hungarian", tanto più se uso il C++. Comunque, lo stesso
libro citato dice anche: "Le vostre convenzioni influenzeranno anche la comprensibilità da
parte di chi non le adotta: la diffusione è forse l'unico vero vantaggio di una
convenzione discutibile come Hungarian"
Così, giusto per completezza di informazione ;-)
Andrea

 wrote:
[ snip ]
AL>#  Non l'ho mai visto utilizzato da nessuno all'infuori dell'SDK di MS
AL>#Windows. Questo fatto dovrebbe essere *altamente* indicativo... ;)
AL>A dire il vero, Peter Norton spesso consiglia di utilizzare questo
AL>tipo di notazione, utilizzando tre caratteri di prefisso (int, bln,
AL>str, ecc...ecc...).
Questo e' quello che ne pensa Linus Torvalds:
--------------------------------------------------------------------------
[...]
Encoding the type of a function into the name (so-called Hungarian
notation) is brain damaged - the compiler knows the types anyway and can
check those, and it only confuses the programmer.  No wonder MicroSoft
makes buggy programs.
[...]
--------------------------------------------------------------------------
(da: /usr/src/linux/Documentation/CodingStyle )
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 [...]
E io condivido pienamente. :-)
EMG

Così, giusto per completezza di informazione ;-)
Concordo.
Daniele.