Was ist für euch guter Programmcode?



  • Optimizer schrieb:

    Du hast den Sack Reis vergessen, der noch umfallen muss. 🤡

    Da habt ihr völlig recht, so eine Funktion denk ich mir als nächstes aus, die nur dann aufgerufen werden darf, wenn erst ein Sack Reis umgefallen ist.
    😃 😃 😃 Aber der Sack Reis wird natürlich in Direct3D animiert 🙂 🙂 ob ihr es glaubt oder nicht sogar solche Funktionen kann man sich ausdenken 🙂 🙂 🙂



  • nman schrieb:

    Naja, Du hast da irgendwas geredet von wegen "Nicht jedes Betriebssystem bringt Schnittstellen für Treiber mit"

    Bitte? 😮 Wo soll ich denn sowas gesagt haben? Obwohl das für bstimmte BS teilweise zutrifft (zB DOS), das ist aber ein anderes Thema.
    Ich hab lediglich gesagt, dass in der Treiberschnittstelle auch Arbeit steckt. Das ist nicht in ein paar Stunden gemacht. Und das bezog sich auf folgende Aussage

    ROFL schrieb:

    Glaubst DU bei Windows war das schon immer so? Soundkarte rein, Plug'n Play und alles klappt? Das ist kein Verdienst der MS Programmierer, sondern der Hardware Industrie!

    Sowas ist ein geben und nehmen. Da kann imo keiner die Lorbeeren für sich selbst beanspruchen. Soviel zum Thema... aber es ging ja eigentlich um was anderes, also offtopic.close().



  • groovemaster schrieb:

    Bitte? 😮 Wo soll ich denn sowas gesagt haben?

    Keine Ahnung, aber bei einem 27-Seiten-Thread mag ich jetzt nicht suchen müssen. 😉



  • Pfff, Weichei. Ich hab schon längere Flame-Threads verursacht. 🤡 👍



  • nman schrieb:

    Keine Ahnung, aber bei einem 27-Seiten-Thread mag ich jetzt nicht suchen müssen. 😉

    Musst du auch nicht, denn du wirst diesbezüglich nix finden. 😉





  • lang. schrieb:

    ist sowas guter code: http://rafb.net/paste/results/LLUB3v51.html ?

    ne. schau mal bei www.ioccc.org, wie es die KÖNNER machen!



  • www.ioccc.org konnte nicht gefunden werden...

    Un sowieso man schreibt doch nicht plötzlich einfach so was in nen monate alten Flamethread rein...



  • BloodLord schrieb:

    www.ioccc.org konnte nicht gefunden werden...

    Un sowieso man schreibt doch nicht plötzlich einfach so was in nen monate alten Flamethread rein...

    Warum nicht? 🤡



  • lang. schrieb:

    ist sowas guter code: http://rafb.net/paste/results/LLUB3v51.html ?

    leider sehen alle mir bekannten open source server so aus. da braucht man sich über sicherheitslöcher nicht zu wundern.



  • http schrieb:

    lang. schrieb:

    ist sowas guter code: http://rafb.net/paste/results/LLUB3v51.html ?

    leider sehen alle mir bekannten open source server so aus. da braucht man sich über sicherheitslöcher nicht zu wundern.

    lol. der code ist cool.

    hab mal ein wenig den von lightppd gelesen, um ein bug zu fixen. war eigentlich ganz lesbar un den gegenden, wo ich stöbern mußte. (aber noch weit von "hübsch" entfernt.)



  • Immer noch schöner als mein Code 😉

    Mir fällt gerade so nebenbei ein: Gibt es eigentlich einen Standard für das Zählen von Zeilennummern eines Programmes? Oft gibt man ja an "Core: 100.000 Lines" oder so ähnliches. Die könneten jetzt aber so:

    1: #include <iostream>
    2: #include <string>
    3: using namespace std;
    4: int main() { cout << "Welcome!" << endl; string eingabe; cin.getline(eingabe,80); cout << eingabe; return 0; }
    

    oder so aussehn:

    1:         /*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯/
     2:        /        The genius Input-Output Tool       /
     3:       /         ============================      / 
     4:      /                                           /
     5:     /   Version 0.1                             /
     6:    /  (C) 2005 by whoever                      /
     7:   /__________________________________________*/
     8:
     9:
    10:
    11: // Include section
    12: 
    13:   #include <iostream>
    14:
    15:      /* Includes iostream standard library, required for
    16:         using cin and cout methods.             */
    17:
    18:   #include <string>
    19
    20:      /* Includes string standard library        */
    21:
    22: // End of include Section
    23:
    24:
    25: using namespace std; // Sets namespace std
    26:
    27:
    28:
    29: int main()
    30:
    31: /* Function main...
    32:          (stupid discription) ...           */
    33: {
    34:
    35:     cout << "Welcome!"
    36:          << endl;
    37:
    38:
    39:     string eingabe;
    40:
    41:
    42:     cin.getline(eingabe,80);
    43:       
    44:     cout << eingabe;
    45:
    46:
    47:     return 0;
    48:
    49: }
    


  • Meist gibt man effective lines of code an. Da werden Kommentare, Leerzeilen usw. nicht mitgezählt.



  • BloodLord schrieb:

    Mir fällt gerade so nebenbei ein: Gibt es eigentlich einen Standard für das Zählen von Zeilennummern eines Programmes?

    ja. man zählt die nur zeilenumbrüche und tut dann so, als gäbe es pro zeilenumbruch eine zeile.

    Oft gibt man ja an "Core: 100.000 Lines" oder so ähnliches.

    in meinen kreisen sagt sowas keiner. und wenn, würden die anderen ihn mitleidig belächeln.
    wenn einer grade freundlich drauf ist, sagt er vielleicht noch "geht das nicht auch in 5000 Lines?".

    Die könneten jetzt aber so:
    oder so aussehn:

    die lange version macht man, wenn man nach zeilen bezahlt wird. hat nur den effekt, daß mit der zeit alle mehr zeilen machen müssen (weniger kohle pro zeile kriegen) und ordenlicher code nicht mehr gebaut werden kann.



  • volkard schrieb:

    http schrieb:

    lang. schrieb:

    ist sowas guter code: http://rafb.net/paste/results/LLUB3v51.html ?

    leider sehen alle mir bekannten open source server so aus. da braucht man sich über sicherheitslöcher nicht zu wundern.

    lol. der code ist cool.

    Was meinst du mit cool?



  • volkard schrieb:

    http schrieb:

    lang. schrieb:

    ist sowas guter code: http://rafb.net/paste/results/LLUB3v51.html ?

    leider sehen alle mir bekannten open source server so aus. da braucht man sich über sicherheitslöcher nicht zu wundern.

    lol. der code ist cool.

    hab mal ein wenig den von lightppd gelesen, um ein bug zu fixen. war eigentlich ganz lesbar un den gegenden, wo ich stöbern mußte. (aber noch weit von "hübsch" entfernt.)

    lol. die http request parse funktion ist dort ja noch länger. 739 zeilen. das kann doch echt nicht wahr sein. 🙄

    http://www.rafb.net/paste/results/96dVAS88.html



  • http schrieb:

    lol. die http request parse funktion ist dort ja noch länger. 739 zeilen. das kann doch echt nicht wahr sein. 🙄

    ok. ich nehme den nicht mehr.



  • volkard schrieb:

    http schrieb:

    lol. die http request parse funktion ist dort ja noch länger. 739 zeilen. das kann doch echt nicht wahr sein. 🙄

    ok. ich nehme den nicht mehr.

    thx 🤡 👍

    ich freue mich schon auf deinen. 🙂



  • BloodLord schrieb:

    Un sowieso man schreibt doch nicht plötzlich einfach so was in nen monate alten Flamethread rein...

    Ich fand die Dinge, die in diesem Thread gesagt wurden teilweise sehr interessant. Ich sehe den somit auch nicht als "Flamethread" an.

    BTW: Da der Thread jetzt schon reanimiert wurde, kann ich ja wiedermal'n bischen Code posten, gegen den man dann flamen kann. 😃

    Das ist Code, bei dem ich mir eigentlich keine besonders große Mühe gemacht habe. Ich halte es also nicht für besonders guten Code. Es fehlen auch Kommentare usw.. Ich bin mal gespannt, was da für Verbesserungsvorschläge kommen, falls dazu noch einer Lust hat.

    Der Code ist letztendlich eine Realisierung eines n-dimensionalen Bresenham-Linienalgorithmus inklusive einer Clipping-Funktion, die dem Liang-Barsky Algorithmus nahe kommt. Es wird allerdings keine Linie gemalt, sondern "analysiert".

    /*
     * LineCaster.java
     *
     * Created on 8. März 2005, 01:25
     */
    
    package jaradap.model.algorithm;
    
    import jaradap.model.algorithm.multiPointProcessor.RaycastProcessor;
    import jaradap.model.data.BasicRaster;
    import jaradap.model.data.StandardRaster;
    import math.linearAlgebra.Vector;
    
    /**
     *
     * @author Gregor
     */
    public class LineCaster
    {
       private final RaycastProcessor pointProcessor;
       private final StandardRaster raster;
       private final int dimension;
    
       /** Creates a new instance of RayCaster */
       public LineCaster(final RaycastProcessor pointProcessor, final StandardRaster raster)
       {
          this.pointProcessor = pointProcessor;
          this.raster = raster;
          dimension = raster.getDimensions();
       }
    
       public float castLine(final Vector startPoint, final Vector endPoint)
       {
          if (startPoint.getDimension() != dimension) 
             throw new IllegalArgumentException("startPoint has wrong dimension.");
          if (endPoint.getDimension() != dimension) 
             throw new IllegalArgumentException("endPoint has wrong dimension.");
          final int[] realStartPoint = new int[dimension];
          final int[] realEndPoint = new int[dimension];
          if(!setFirstPointInRaster(realStartPoint,startPoint,endPoint)) return 0.0f;
          if(!setFirstPointInRaster(realEndPoint,endPoint,startPoint)) return 0.0f;
          int maxDiffIndex = 0;
          final int[] intDifferences = new int[dimension];
          final int[] relativePosition = new int[dimension];
          final int[] position = new int[dimension];
          final int[] increments = new int[dimension];
          for(int i = 0 ; i < dimension ; ++i)
          {
             intDifferences[i] = realEndPoint[i] - realStartPoint[i];
             increments[i] = (intDifferences[i] > 0) ? 1 : -1;
             intDifferences[i] = Math.abs(intDifferences[i]);
             if (intDifferences[i] > intDifferences[maxDiffIndex]) maxDiffIndex = i;
             relativePosition[i] = intDifferences[i] >> 1;
             position[i] = realStartPoint[i];
          }
          final int maxDifference = intDifferences[maxDiffIndex];
          final int maxIncrement = increments[maxDiffIndex];
          pointProcessor.reset();
          for(;position[maxDiffIndex] != realEndPoint[maxDiffIndex] ; position[maxDiffIndex] += maxIncrement)
          {
             if (pointProcessor.addPoint(raster,position)) break;
             for(int i = 0 ; i < dimension ; ++i)
             {
                if (i == maxDiffIndex) continue;
                relativePosition[i] += intDifferences[i];
                if (relativePosition[i] < maxDifference) continue;
                position[i] += increments[i];
                relativePosition[i] -= maxDifference;
             }
          }
          pointProcessor.addPoint(raster,position);
          return pointProcessor.getValue();
       }
    
       private final boolean setFirstPointInRaster(final int[] target, final Vector firstLinePoint, 
                                                   final Vector lastLinePoint)
       {
          final double[] differences = new double[dimension];
          double fraction = 0.0;
          for (int i = 0 ; i < dimension ; ++i)
          {
             differences[i] = (float)(lastLinePoint.getComponent(i) - firstLinePoint.getComponent(i));
          }
          for (int i = 0 ; i < dimension ; ++i)
          {
             double newFraction = 0.0;
             final double component = firstLinePoint.getComponent(i);
             final double difference = differences[i];
             final double maxValue = raster.getSize(i) - 1;
             if (component < 0.0)
             {
                if (difference <= 0.0) return false;
                newFraction = component / difference;
             }
             else if (component > maxValue)
             {
                if (difference >= 0.0) return false;
                newFraction = (component - maxValue) / difference;
             }
             if (newFraction < fraction) fraction = newFraction;
          }
          for (int i = 0 ; i < dimension ; ++i)
          {
             target[i] = Math.round((float)(firstLinePoint.getComponent(i) - fraction * differences[i]));
             if (target[i] < 0) return false;
             if (target[i] > raster.getSize(i) - 1) return false;
          }
          return true;
       }
    }
    


  • IMHO: Viel zu lange Funktionen mit zu vielen lokalen Variablen. Da sollte man versuchen, besser aufzuteilen. Zwing mich jetzt aber nicht, darüber nachzudenken, wo. 🤡


Anmelden zum Antworten