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

FSA

Community-Fossil

  • Private Nachricht senden

31

25.01.2014, 20:08

So etwas vermisse ich in C++! Gefällt mir!

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

33

25.01.2014, 20:44

Interessant, in C# scheint es exakt die selben Einschränkungen bei den benannten Parametern zugeben, wie bei meiner Sprache.
Dann habe ich ja dbzgl. bis jetzt alles richtig gemacht ^^

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

34

26.01.2014, 11:11

Und was hältst du von dem Feature bzgl. Nullable bei Typen, welches ich vorgeschlagen habe? (kurz zusammengefasst: standardmäßig sind für Typen keine null-Werte möglich, wenn eine Variable dieses annehmen können soll bzw. eine Methode dies zurückgeben können soll, muss der bei der Typangabe auch ein Nullable angegeben werden, wie mit dem ? in C#)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

35

26.01.2014, 14:16

So gut kenne ich C# jetzt nicht - hab nur mal kurz in einem Nebenfach an der Uni damit gearbeitet.
Aber ich will auf jeden Fall eine strikte Unterscheidung zwischen 0 und null machen.
Ein Pointer soll also nicht mit 0 initialisierbar sein, sondern mit 'null', oder was meinst du genau?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

36

26.01.2014, 15:26

Sacaldur meint, dass man Value Types auf null setzen kann. Bestes Beispiel ist z.B. DateTime in C#. Es ist ein ValueType und muss somit als Parameter immer gesetzt sein und kann nicht null sein, so wie int. Mit Nullables geht sowas. Letztendlich ist es ein generischer Typ, der den Wert zur verfügung stellen kann. Das sieht dann so aus:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
public void DoSomething(DateTime ?optionalTimeStamp = null)
{
    if (optionalTimeStamp.HasValue())
    {
        //do something
        var value = optionalTimeStamp.Value;
    }
    else
    {
        //do something without timestamp.
    }
}


Wenn du das Fragezeichen weglässt, dann kompiliert der Code nicht, weil DateTime ebend ein Value Type ist. Noch schöner finde ich sowas zum Beispiel für so etwas:

C#-Quelltext

1
2
3
4
5
6
public void FindEvent(EventType eventType, DateTime ?optionalTimeStamp = null)
{
    var minialEventTime = optionalTimeStamp.GetValueOrDefault(DateTime.MinValue);
    
    _allEvents.Where(e => e.Type == eventType && e.TimeStamp >= minimalEventTime);
}


EIne Methode zum finden von Events aus einer Liste nach Typ, mit optional einem minialem TimeStamp oder nicht. GetValueOrDefault liefert den Wert, wenn optionalTimeStamp gestetzt ist (ungleich null), ansonsten wird der angegebene Default geliefert. Das ist ziemich elegant und sehr praktisch.

Ansonsten finde ich die idee von Parameternamen klasse! Erhöht oftmals sehr die lesbarkeit. Ich verwende es manchmal auch für Methoden, wo die angabe des Parameters die Lesbarkeit erhöht.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

37

26.01.2014, 16:12

Sieht interessant aus, davon höre ich heute zum ersten Mal.
C# hat ohnehin einige Features die mir gut gefallen.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

38

26.01.2014, 16:28

Ich meinte nicht ein Übernehmen der C#-Klasse, sondern eine Kombination aus dem Nullable aus C# und der Eigenschaft aus Rust, dass keiner Variable null zugewiesen werden kann.
Das heißt, einem object test kann kein null zugewiesen werden, sondern nur ein Objekt (ggf. auch erst später im Code) und einem object? test kann ggf. auch null zugewiesen werden.
Das wirkt sich auch auf Methoden aus, sodass eine public object foo() {...} kein null zurückgeben kann (nur ein Objekt bzw. eine Exception schmeißen) und nur public object? foo() {...} auch null zurückgeben kann.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

FSA

Community-Fossil

  • Private Nachricht senden

39

26.01.2014, 16:29

Mir ist der Sinn davon nicht ganz klar.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

40

26.01.2014, 16:57

du bildest damit in einer Sprache ab, dass einen Wert nicht setzt. Bei Value Types geht das nur implizit über z.B. bei int = 0 oder String ist leerstring. Aber prinzipiell ist ja 0 oder leerstring ein gültiger Wert dieses Datentyps. wenn du andereseits ein Objekt hast, kann die Referenz darauf null sein, das ist bedeutet nicht gesetzt (oder nullptr bei C++ :)). Durch das erlauben von so genannten Nullables kannst du explizit im Code sehen, dass der Wert nicht gesetzt ist.

Werbeanzeige