Ergebnis 1 bis 20 von 255

Thema: while(true) {write();} - Der Programmierer-Spamthread #1

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Mich würde mal interessieren, ob jemand außer mir auch mit dem Problem zu kämpfen hat, gezwungen zu sein immer wieder den Code umzuschreiben, wenn einem ein treffenderer Name für eine Routine, eine bessere Namenskonvention, oder eine bessere Formulierung für einen Kommentar einfällt (von besseren Problemlösungsansätzen ganz zu schweigen...)? Oft ist es sogar so, dass ich immer wieder von einem Ansatz zum anderen wechsle, da zwar beide ausgewogene Vor- und Nachteile haben, die Vorteile des aktuell anderen Ansatzes aber immer zu überwiegen scheinen. Irgendwann schaffe ich es zwar, mich zusammenzureißen und einen Weg zu gehen, aber der Weg dahin ist mühsam. Das ist zum Kotzen, denn damit verbringe ich etwa 50% (wenn nicht mehr) der gesamten Zeit beim Programmieren. Das hat natürlich auch damit etwas zu tun, dass ich mir mein eigener Chef bin und aus dem Grund keine klaren Anweisungen habe, mich an etwas zu halten, aber ich denke, es hat auch einen nicht unwesentlichen Teil mit fehlender Erfahrung und Routine zu tun.

  2. #2
    Zitat Zitat von Kyuu Beitrag anzeigen
    Mich würde mal interessieren, ob jemand außer mir auch mit dem Problem zu kämpfen hat, gezwungen zu sein immer wieder den Code umzuschreiben, wenn einem ein treffenderer Name für eine Routine, eine bessere Namenskonvention, oder eine bessere Formulierung für einen Kommentar einfällt (von besseren Problemlösungsansätzen ganz zu schweigen...)? Oft ist es sogar so, dass ich immer wieder von einem Ansatz zum anderen wechsle, da zwar beide ausgewogene Vor- und Nachteile haben, die Vorteile des aktuell anderen Ansatzes aber immer zu überwiegen scheinen. Irgendwann schaffe ich es zwar, mich zusammenzureißen und einen Weg zu gehen, aber der Weg dahin ist mühsam. Das ist zum Kotzen, denn damit verbringe ich etwa 50% (wenn nicht mehr) der gesamten Zeit beim Programmieren. Das hat natürlich auch damit etwas zu tun, dass ich mir mein eigener Chef bin und aus dem Grund keine klaren Anweisungen habe, mich an etwas zu halten, aber ich denke, es hat auch einen nicht unwesentlichen Teil mit fehlender Erfahrung und Routine zu tun.
    Das ist bei mir normal Zustand.
    Ich habe mein CMS schon tausend mal umgeschrieben ... vor kurzem habe ich mich z.B. mal einfach so dazu entschlossen es auf PHP-5.3 inkl. Namespaces umzustellen ... .

    Und sogar auf der Arbeit ist es häufig so. "Das Modul ist scheiße das müssen wa mal neu machen" .

  3. #3
    Ah, immerhin einer. Wobei bei mir es meistens eher Kleinigkeiten sind, was das Ganze noch ärgerlicher macht.

  4. #4
    Ich weiß nicht ob das wirklich so toll ist wie ich das denke, aber:
    Code (java):
     
          for(int i = 0; i < enemy.size(); i++) {
            if(waveStart.get(i) < distance && waveStop.get(i) > distance) {
              for(int j = 0; j < enemy.get(i).size(); j++) {
                if(enemy.get(i).get(j).isAlive() && !enemy.get(i).get(j).isOutOfWindow()) {
                  g2d.drawImage(enemy.get(i).get(j).getImage(), enemy.get(i).get(j).getX(), enemy.get(i).get(j).getY(), this);
                }
              }
            }
          }
     


    Ist das ein toller langer Befehl?
    Was hier passiert ist dabei ziemlich einfach, für unseren vertikal Shooter haben wir die Gegner die in den einzelnen Level auftauchen in einen Array eines Arrays gepackt, der "obere" Array steht für das Level der "untere" für die Waves in denen die Gegner auftauchen.
    Sprich ,die äußere Schleife kontrolliert die Nummer der Wave und die innere die Anzahl der Gegner der Wave.
    Innen wird also nur der Gegner gezeichnet und für mich ist das schon ein ziemlich großer Schritt x_X

  5. #5
    Zitat Zitat von R.D. Beitrag anzeigen
    Ich weiß nicht ob das wirklich so toll ist wie ich das denke, aber:
    Code (java):
     
          for(int i = 0; i < enemy.size(); i++) {
            if(waveStart.get(i) < distance && waveStop.get(i) > distance) {
              for(int j = 0; j < enemy.get(i).size(); j++) {
                if(enemy.get(i).get(j).isAlive() && !enemy.get(i).get(j).isOutOfWindow()) {
                  g2d.drawImage(enemy.get(i).get(j).getImage(), enemy.get(i).get(j).getX(), enemy.get(i).get(j).getY(), this);
                }
              }
            }
          }
     


    Ist das ein toller langer Befehl?
    Was hier passiert ist dabei ziemlich einfach, für unseren vertikal Shooter haben wir die Gegner die in den einzelnen Level auftauchen in einen Array eines Arrays gepackt, der "obere" Array steht für das Level der "untere" für die Waves in denen die Gegner auftauchen.
    Sprich ,die äußere Schleife kontrolliert die Nummer der Wave und die innere die Anzahl der Gegner der Wave.
    Innen wird also nur der Gegner gezeichnet und für mich ist das schon ein ziemlich großer Schritt x_X
    Wofür ist die Variable "distance" da? Wie weit die Gegner"welle" von uns, also dem Shooter, entfernt ist?

  6. #6
    Zitat Zitat von R.D. Beitrag anzeigen
    Ich weiß nicht ob das wirklich so toll ist wie ich das denke, aber:
    Code (java):
     
          for(int i = 0; i < enemy.size(); i++) {
            if(waveStart.get(i) < distance && waveStop.get(i) > distance) {
              for(int j = 0; j < enemy.get(i).size(); j++) {
                if(enemy.get(i).get(j).isAlive() && !enemy.get(i).get(j).isOutOfWindow()) {
                  g2d.drawImage(enemy.get(i).get(j).getImage(), enemy.get(i).get(j).getX(), enemy.get(i).get(j).getY(), this);
                }
              }
            }
          }
     


    Ist das ein toller langer Befehl?
    Was hier passiert ist dabei ziemlich einfach, für unseren vertikal Shooter haben wir die Gegner die in den einzelnen Level auftauchen in einen Array eines Arrays gepackt, der "obere" Array steht für das Level der "untere" für die Waves in denen die Gegner auftauchen.
    Sprich ,die äußere Schleife kontrolliert die Nummer der Wave und die innere die Anzahl der Gegner der Wave.
    Innen wird also nur der Gegner gezeichnet und für mich ist das schon ein ziemlich großer Schritt x_X
    Du könntest den Code grandios vereinfachen, wenn du enemy.get(i).get(j) in einer neuen Variable speicherst. Hat nebenbei noch den Vorteil, dass die Methoden nur einmal ausgeführt werden und das Programm dadurch wahrscheinlich schneller wird. Und lesbarer...

  7. #7
    Zitat Zitat von R.D. Beitrag anzeigen
    Code (java):
     
          for(int i = 0; i < enemy.size(); i++) {
            if(waveStart.get(i) < distance && waveStop.get(i) > distance) {
              for(int j = 0; j < enemy.get(i).size(); j++) {
                if(enemy.get(i).get(j).isAlive() && !enemy.get(i).get(j).isOutOfWindow()) {
                  g2d.drawImage(enemy.get(i).get(j).getImage(), enemy.get(i).get(j).getX(), enemy.get(i).get(j).getY(), this);
                }
              }
            }
          }
     
    Muss er unbedingt die kompletten For-Schleifen durchlaufen?
    Die Innere Schleife wird ja nur dann ausgeführt, wenn die Bedingung waveStart.get(i) < distance && waveStop.get(i) > distance erfüllt ist.
    Wenn die Bedingung einmal nicht erfüllt wurde, kann sie dann nochmal erfüllt werden?
    Wenn nein, würde ich eine While-Schleife nehmen oder sogar den Teil zu einer Rekursion umbauen.

  8. #8
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Muss er unbedingt die kompletten For-Schleifen durchlaufen?
    Die Innere Schleife wird ja nur dann ausgeführt, wenn die Bedingung waveStart.get(i) < distance && waveStop.get(i) > distance erfüllt ist.
    Wenn die Bedingung einmal nicht erfüllt wurde, kann sie dann nochmal erfüllt werden?
    Wenn nein, würde ich eine While-Schleife nehmen oder sogar den Teil zu einer Rekursion umbauen.
    Warum nicht einfach die if-Bedingung in den for-Kopf integrieren? Dann hast du den Komfort der for-Schleife ohne unnötige Durchläufe (falls deine Annahme zutrifft).

  9. #9
    Edit:

    Hat sich erledigt, hab das Problem gelöst

    Geändert von R.D. (24.04.2010 um 16:49 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •