Worst Practices

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben

Worst Practices

Beitragvon Warf » 3. Jun 2018, 20:14 Worst Practices

Hey ho,

hier im Forum kommt es immer mal wieder zu Diskussionen über schlechten Programmierstil. Da dachte ich mir das kann man doch mal auf die Spitze treiben und sich mal über die schlimmsten Stile unterhalten.

Lasst uns hier mal besonders beschissenen Code sammeln. Sprache ist komplett egal.

Ich fange mal mit einem wunderschönen C++ Beispiel an, was ich selbst mal für die Uni fabriziert habe:
Code: Alles auswählen
for (size_t i = 0; i < cluster->length; result.points[i++] = {
  (double)cluster->spheres[idxList[i-1]].pos.x,
  (double)cluster->spheres[idxList[i-1]].pos.y,
  (double)cluster->spheres[idxList[i-1]].pos.z
});
 


Es hat fast ne halbe stunde gebraucht bis das andere Gruppenmitglied verstanden hat das die For schleife keinen Body hat und alles im header drin ist. Vor allem das verhalten von i für die Zuweisung mit dem I++ ist schön. Das ich -1 rechnen musste hab ich via trail&error herausgefunden. Alles in allem würde ich das nicht empfehlen und haben wir später auch noch geändert

Und ich finde bei C den Preprozessor ganz lustig, damit kann man sein Programm beliebig verunstalten, hier mal ein kleines Beispiel was ich tatsächlich so benutzt habe
Code: Alles auswählen
#define Minutes *60*SecondDelay
#define Hours *60*60*SecondDelay
#define And +
#define Seconds *SecondDelay
...
switch (PilotState) {
      case 0:
        if (Time > 20 Seconds) {
          RunProgram(0);
          PilotState++;
        }
        break;
      case 1: // Light test
        if (dTime > 2 Minutes And 30 Seconds) {
          RunVerb(35, -1);
          PilotState++;
        }
        break;
      case 2: // Time check
        if (dTime > 2 Minutes And 30 Seconds) {
          RunVerb(16, 65);
          PilotState++;
        }
        break;
      case 3: // ENABLE IMU & Start P00
        if (dTime > 2 Minutes) {
          AddActionToQ(atIMU, IMU_TURN_ON_ACTION, NextActions);
          PilotState++;
        }
        break;
Warf
 
Beiträge: 919
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Mathias » 3. Jun 2018, 21:27 Re: Worst Practices

Den mit dem "And" finde ich gut. :mrgreen:
Wen man wenigsten noch "Plus" genommen hätte.

Beim Arduino C/C++ wird das "And" schon für den Ersatz von && gebraucht.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4107
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Dies und Das



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

porpoises-institution
accuracy-worried