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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

13.10.2014, 21:27

Dabei ist seine Lösung sehr unschön. Allein das for (int i) statt einem ordentlichen foreach ist wirklich nicht sonderlich gut. Dann noch ein überflüssiges "Contains" dazu...
Mal davon abgesehen, dass ich ja einen kompakten Einzeiler vorgeschlagen habe.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

12

13.10.2014, 21:42

Ich muss Bluecobold zustimmen. Bei diesem, sehr einfachen Problem, sollten höchstens 2 Zeilen reichen.
In meiner Interpretiation deiner Problembeschreibung brauch man zwei Schleifen. Bei dem gemeinten Problem reicht eine Schleife völlig aus. Bluecobolds Lösung ist wohl die beste. Denn übersichtlicher und kompakter Code ist bis zum Stadium, in der man die Performance optimiert, der beste weg.
Und selbst wenn dieses Staduim erreicht wird, wird es sehr unwahrscheinlich, dass gerade diese Stelle dein Programm ausbremst und deshalb optimiert werden muss. Die Regel, dass 20% des Codes in 80% der Zeit ausgeführt wird, gilt in jedem Programm.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

DeathStorm

Frischling

Beiträge: 63

Wohnort: Warendorf

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

13

15.10.2014, 10:39

Prinzipiell habt Ihr Recht, aber jemand der die Grundlagen nicht beherscht und Wissen will wie etwas funktioniert kann klar eine Kurzschreibweise abtippen und es funzt.

Aber um es zu verstehen halte ich eine möglichst ausführliche Schreibweise immer für Sinnvoller.

Abgesehen davon, bin ich persönlich auch nicht der Freund davon, alles und überall nur Kurzschreibweisen zu verwenden, da dies den Code aus meiner Persönlichen Meinung unleserlicher macht.

Ihr beiden habt Programmieren schon drauf aber Mango scheint gerade zu lernen. Von daher schreibt Ihr es weiterhin in Kurzschreibweise und tetuliert nicht eine Ausführliche Schreibweise als falsch.

Gruß Christian
Besucht meinen neuen Blog auf Weird Mind :)

Neue kreative Köpfe sind immer gern gesehen :thumbsup:

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

14

15.10.2014, 13:37

Abgesehen davon, bin ich persönlich auch nicht der Freund davon, alles und überall nur Kurzschreibweisen zu verwenden, da dies den Code aus meiner Persönlichen Meinung unleserlicher macht.

Eigentlich gehört der Code auch in eine Methode.

C#-Quelltext

1
2
3
4
int CountStringInList(String searchString, List<String> stringList)
{
    return stringList.Where(s => s == searchString).Count();
}

Schon weiß jeder was der Code macht und man erhält optimale übersicht.
Ihr beiden habt Programmieren schon drauf aber Mango scheint gerade zu lernen. Von daher schreibt Ihr es weiterhin in Kurzschreibweise und tetuliert nicht eine Ausführliche Schreibweise als falsch.

Nur weil es eine bessere Variante gibt heißt es nicht, dass die andere falsch ist.

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
int CountStringInList(String searchString, List<String> stringList)
{
    int counter = 0;
    foreach(String line in stringList)
    {
        if(line == searchString)
            ++counter;
    }
    return counter;
}

Das wäre die Standardversion, die jeder Programmierer selbstständig implementieren können muss. Sie ist nicht falsch.
BlueCobolds Lösung ist aber trotzdem besser weil die Quellcodedatei dadurch kürzer und übersichtlicher wird.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (15.10.2014, 14:18)


DeathStorm

Frischling

Beiträge: 63

Wohnort: Warendorf

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

15

15.10.2014, 13:51

Genau das versuche ich zu sagen.

Ob der Code Lesbarer oder "besser" ist, ist eine persönliche Entscheidung.

Ob ich irgendwo eine zwei oder 5 Zeilen mehr stehen habe ist doch völlig wurscht. Solange ich und ggf. mein Team mit Code gut umgehen können ist doch alles in Ordnung.

Ich muss nicht zwingend versuchen immer alles auf eine Minimalform zu bringen.

gruß Christian
Besucht meinen neuen Blog auf Weird Mind :)

Neue kreative Köpfe sind immer gern gesehen :thumbsup:

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

16

15.10.2014, 14:14

Ich für meinen Teil würde aber ebenfalls die von BlueCobold vorgeschlagene Variante bevorzugen.
Ob die paar Zeilen mehr oder weniger einen Unterschied machen, kommt aber auch noch auf andere Dinge an: hat man es in eine eigene Methode ausgelagert? Geht man ständig so vor, ausführlicheren Code zu schreiben? Gibt es einen Performanceunterschied? ...

Ansonsten, wenn man es bereits in eine separate Methode auslagert, dann kann man auch gleich eine Erweiterungsmethode daraus machen:

C#-Quelltext

1
2
3
4
public static int CountString(this List<string> self, string searchString)
{
    return self.Where(s => s == searchString).Count();
}
Der Aufruf wäre dann nur noch stringList.CountString("abc").
[Nachtrag: wenn man es ganz allgemein halten will, kann man natürlich auch eine generische Erweiterungsmethode CountElement implementieren, damit man diese für jede Liste aufrufen kann...]

@Nachoman:
du kannst auch die Code-Tags für C#-Code ("cs") verwenden. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

DeathStorm

Frischling

Beiträge: 63

Wohnort: Warendorf

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

17

15.10.2014, 14:18

Das ist ja das was ich sage.

In den meisten Fällen macht es Performance technisch keinen soo großen Unterschied ob ausführlich oder Kurzform.

Ja das für wiederkehrende Aktionen eine Funktion geschrieben wird ist auch jedem iwann klar.

Doch zum lernen ist es erstmal einfache nen ausführlichen Code zu lesen und zu schreiben und dann den Aha Effekt zu haben das es auch kürzer geht.

Ansonsten ist es einfach Geschmackssache. Da weder das eine noch das andere Richtig oder Falsch ist.

Und ich denke das Thema ist soweit erschöpft und wir Diskutieren hier Dinge die eingentlich keinen Interessiert und im schlimmsten Fall werden Leute wie ggf. Mango dadurch nur mehr verwirrt als das seine Fragen beantwortet werden.

gruß Christian
Besucht meinen neuen Blog auf Weird Mind :)

Neue kreative Köpfe sind immer gern gesehen :thumbsup:

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

15.10.2014, 15:05

Ob der Code Lesbarer oder "besser" ist, ist eine persönliche Entscheidung.
Nein, falsch. Eine Zeile ist immer besser als 20.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeathStorm

Frischling

Beiträge: 63

Wohnort: Warendorf

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

19

15.10.2014, 15:13

@BlueCobold:

NOPE, da widerspreche ich.

Vor allem da die Definition hier von "Besser" noch fehlen würde um eine fundierte Diskussion führen zu können.
Besucht meinen neuen Blog auf Weird Mind :)

Neue kreative Köpfe sind immer gern gesehen :thumbsup:

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

20

15.10.2014, 15:19

@BlueCobold:

NOPE, da widerspreche ich.

Vor allem da die Definition hier von "Besser" noch fehlen würde um eine fundierte Diskussion führen zu können.
Ich nicht. ;)
Eins der von mir aufgezählten Punkte ist, ob man grundsätzlich längere Schreibweisen verwendet oder ob es nur in diesem einen Fall gemacht wurde. Verwendet man aus Prinzip längere Codeabschnitte, die sich auch mit Einzeilern und vorgefertigten Methoden lösen lassen, kann es schnell passieren, dass eine eigentlich 20 Zeilen lange Methode doch eher 100 Zeilen lang wird.
Mal abgesehen davon, dass Einzeiler grundsätzlich schneller zu lesen sind, als 5-zeilige Umsetzungen.

Und ich denke das Thema ist soweit erschöpft und wir Diskutieren hier Dinge die eingentlich keinen Interessiert und im schlimmsten Fall werden Leute wie ggf. Mango dadurch nur mehr verwirrt als das seine Fragen beantwortet werden.
Solange in den Beiträgen nichts weiter zur Debatte beigetragen wird und stattdessen nur die eigene Meinung nochmal wiederholt wird, kann ich dir nur Recht geben. Aber interessant ist es, dass du darauf hinweist, nachdem ich in meinem Beitrag noch die Erweiterungsmethoden erwähnt habe. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige