Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.01.2013, 12:14

Ungarische Notation von Integer

Hi,

kurze Frage.
Warum ist der Präfix von Integer "n" und nicht ein "i" ?

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

14.01.2013, 12:17

Weil die ungarische Notation wie alle menschlichen Erfindungen eine inkonsequente Sache ist. Außerdem war glaube ich im Orginal das Präfix nicht wirklich vom Typ abgeleitet, sondern eher von der Bedeutung. "n" steht da für eine Anzahl, also genau genommen eigentlich einen unsigned int.

[Edit] Außerdem will ich die Chance gleich nutzen, die Welt für uns Programmierer zu einem etwas besseren Ort zu machen: falls Du noch ungarische Notation benutzt, lass es bitte sein. Das ist eine Erfindung aus Zeiten, als es noch keine sinnvollen IDEs gab und Compiler es mit den Typen nicht so genau genommen haben. Heutzutage ist es ein Krampf beim Tippen und hat genau null Vorteile. Tu Dir und den Leuten, die mal Deinen Code nutzen oder ändern sollen, einen Gefallen: verzichte auf Typ-Präfixe.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

3

14.01.2013, 12:22

Okay,

Dann werde ich darauf verzichten. :D

Danke

xXSlayerXx

Treue Seele

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

4

14.01.2013, 12:42

wie schon in viele Büchern gesagt, gibt es leute die voller hass dagegen sind und andere, die dies für eine Prima Sache halten.

Ich schreibe meinen Code fast ausschließlich mit der Ungarischen Notation, da ich so viel schneller erkennen kann, was das für eine Variable ist und so auch schneller fehler finde.

z.B. beim vergleich zwischen int und float.
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

14.01.2013, 13:11

wie schon in viele Büchern gesagt, gibt es leute die voller hass dagegen sind und andere, die dies für eine Prima Sache halten.

Ich schreibe meinen Code fast ausschließlich mit der Ungarischen Notation, da ich so viel schneller erkennen kann, was das für eine Variable ist und so auch schneller fehler finde.

z.B. beim vergleich zwischen int und float.


dem würde ich wieder hinzufügen wollen, dass aus dem Variablennamen ohnehin der Zwe k der Variable klar werden soll, woraus in vielen Fällen auch der Typ erkennbar ist
wenn man eine Variable "Name" hat, weiß man schon mit großer Sicherheit, dass es eine Zeichenkette ist

ich weiß nicht, in wie wit das zur ungarischen Notation gezählt werden kann, jedenfalls verwenden einige Leute, die den Typen nicht in den Namen aufnehmen, eine Markierung für Membervariablen ("m" oder "m_")
ich verwende dies jedoch nicht, hatte aber dennoch nie Probleme mit der Zuordnung, allerdings könnte es da wieder Unterschiede zwischen den Programmiersprachen oder Entwicklungsumgebungen geben
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

14.01.2013, 14:18

Rein prinzipiell gibt es zwei Varianten von ungarischer Notation. Apps Hungarian, das ist, was der Erfinder der ungarischen Notation sich ursprünglich ausgedacht hat und Systems Hungarian, das ist, was heutzutage jeder unter "ungarischer Notation" versteht. Letzteres entstand, als während der Entwicklung von Windows jemand das, was man damals noch unter "ungarischer Notation" verstand (nämlich Apps Hungarian), falsch verstanden hat. Während Systems Hungarian überhaupt nur in einer schwach typisierten Sprache, wie z.B. C, irgendwie ein wenig Sinn macht, so existieren beiden Varianten einzig und allein als der Not heraus, die mangelnde Ausdrucksfähigkeit der verwendeten Programmiersprache irgendwie erträglicher zu gestalten. Ein Problem das, wie man sich vielleicht denken kann, vor 30 Jahren noch wesentlich aktueller war als heute...

Eine sinnvolle Anwendung von ungarische Notation kann ich mir heutzutage höchstens noch unter ganz bestimmten Umständen in Sprachen wie z.B. Python vorstellen.
Man beachte auch, dass Microsoft selbst ungarische Notation mittlerweile verbannt...

Ich kann jedem, der das wirklich noch für eine gute Idee hält, nur raten: Versuchs mal ohne und schau, wieviel sauberer der Code dadurch wird. Auch würde mich Folgendes interessieren: Wenn sich der Typ einer Variable nun ändert, geht ihr dann tatsächlich den ganzen Code Zeile für Zeile durch und bessert überall den Namen aus? ;)

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »dot« (14.01.2013, 14:29)


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

14.01.2013, 15:16

auch wenn sich das Beispiel mit Python wohl eher allgemein an dynamisch typisierte Sprachen richtet:
ich habe ja mein derzeitiges Projekt in Python angefangen und zum jetzigen Punkt gebracht, ohne eine entsprechende Notation zu verwenden
ich kann mir auch nicht vorstellen, dies unter irgendwelchen Umständen zu benötigen

das Umbenennen dürfte man dann wohl doch eher über Refactoring erledigen, was in Python unter bestimmten Bedingungen auch funktioniert ;)

speziell zu Python will ich aber noch Anmerken, dass man private oder protected Variablen nur durch einen oder zwei Unterstriche erhält, was in Verbindung mit ausschlißlich private/protected Membervariablen zu einer "Markierung" der Membervariablen führt (und ich hoffe mal, dass niemand bei diesen ein m am Anfang anhängt...)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

14.01.2013, 15:17

Wenn sich der Typ einer Variable nun ändert, geht ihr dann tatsächlich den ganzen Code Zeile für Zeile durch und bessert überall den Namen aus

Dafür gibts refactoring. ;)

Aber ja, UN hat in modernem Code eigentlich nichts mehr zu suchen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

14.01.2013, 15:21

Python war ein schlechtes Beispiel, weil es zwar dynamisch, aber stark typisiert ist, ich hätte besser PHP nennen sollen, aber das ist ein Name, den ich nur sehr ungern in den Mund nehme... ;)

Dass man refactoren kann ist mir klar, ich wollte eigentlich nur darauf hinaus, dass ungarische Notation eben zusätzliche Probleme, wie z.B. die Konsistenz der Namen mit sich bringt...

Werbeanzeige