Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Coding Styles Horror

Moderationshinweis von herbivore (04.07.2009 - 15:11)

Hier geht es um den Spaß und um den Lerneffekt. Es geht nicht um das Anprangern der Autoren, schon gar nicht als Person. Bitte berücksichtigt das beim Formulieren euer Beiträge.

Seit 23.07.2010 gilt außerdem:

Vor lauter Kommentaren zu den eigentlichen Coding Styles Horrors sieht man dieselben kaum noch. Das Thema des Threads ist auch nicht, zu jedem Horror eine bessere Lösung zu finden (das ist ohne Weiteres immer möglich, sonst wäre es ja kein Horror), sondern einfach die Leser an besonderes grausamen Konstruktionen teilhaben zu lassen. Bitte lasst daher den Horror unkommentiert.

Khalid
myCSharp.de - Experte

Avatar #avatar-2534.gif


Dabei seit:
Beiträge: 3.511
Herkunft: Hannover

Themenstarter:

Coding Styles Horror

beantworten | zitieren | melden

Moin!

So, nachdem ich mich endlich von meinem Heulkrampf und danach vom Lachkrampf erholt habe, möchte ich euch mal eine echte Perle der Programmierkunst zeigen.

Es handelt sich um ein sehr altes c# Projekt unter .NET 1.1, welches ich zusätzlich nebenbei betreuen soll.

OK, hier der Code (bitte nicht weinen, es ist wirklich so)

(Variablennamen geändert und unnötiger Code entfernt!)


bool userok = false;
do
{
  if (foobar.ShowDialog() == DialogResult.Cancel)
  {
    foobar.Close;
    Close;
    return;
  }

  // Code etwas modifiert
  BenutzerRechte = UserObjekt.ExecuteScalar();
  if(BenutzerRechte != null)
  {
    userok = true;
  }
} while (((foobar.user != "UserName") || (foobar.pass != "Passwort")) && (userok == false));

Der Code ist voll von diesen Stellen. Das ist so geil...
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
private Nachricht | Beiträge des Benutzers
aequitas
myCSharp.de - Member

Avatar #avatar-3079.png


Dabei seit:
Beiträge: 458
Herkunft: Unterfranken

beantworten | zitieren | melden

was ZUM...
be the hammer, not the nail!
private Nachricht | Beiträge des Benutzers
frisch
myCSharp.de - Member

Avatar #avatar-1724.gif


Dabei seit:
Beiträge: 2.082
Herkunft: Coburg / Oberfranken

beantworten | zitieren | melden

ROFL YMMD!

Am geilsten ist echt mal

(foobar.user != "UserName") || (foobar.pass != "Passwort"))
Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de
private Nachricht | Beiträge des Benutzers
kubi
myCSharp.de - Member

Avatar #avatar-2774.gif


Dabei seit:
Beiträge: 365
Herkunft: Krefeld - NRW

beantworten | zitieren | melden

*grinsssss*
private Nachricht | Beiträge des Benutzers
Jürgen Gutsch
myCSharp.de - Member



Dabei seit:
Beiträge: 537

beantworten | zitieren | melden

Hier gibts noch mehr feines: http://www.coding-horror.de/
Und natürlich der Klassiker: http://thedailywtf.com/
private Nachricht | Beiträge des Benutzers
Tachyon
myCSharp.de - Member

Avatar #avatar-2846.jpg


Dabei seit:
Beiträge: 104

beantworten | zitieren | melden

lol


class MeineKlasse
{

 void set( int x )
 {
  if( this == NULL ) throw new ArgumentNullException();
  this.x = x;
 }

 private: int x;
};
von coding-horror.de
Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

Bei coding Horror hab ich grad folgendes gefunden:
Zitat von Coding-Horror


ObjectMania
{
    object obj=null;

    public ObjectMania()
    {
        if(obj != null)
        {
            obj=new object();
        }
    }
Die Beschreibung dazu:
Zitat von Coding-Horror
Die Klassenvariable obj wird zuerst mit null initalisiert. Im Konstruktor wird dann überprüft, ob obj schon auf ein Objekt referenziert und wenn nicht, wird eine Instanz angelegt. ...
Rofl
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

Zitat von Coding-Horror
(x sei mal 1):
y = x++ + ++x;

Was könnten wir nach dieser Anweisung in y erwarten? Wir könnten zum Einen von links nach rechts durchgehen und sagen: x ist erst 1, also steht schonmal 1 + ++x dort. Das ++x wird aber vor der Addition erhöht, also ist es schon 2. Somit erwarten wir 1 + 2 = 3. x wird danach nochmal hochgezählt und hätte nach dieser Anweisung 4.

Zum Anderen könnten wir aber auch sagen, dass das x vor dem gesamten Ausdruck inkrementiert wird. Also hätten wir 2 + 2 = 4 für y. Und x wäre nachher sogar 5.

int x=1;
x+=1;
int y=x+x;
x+=1;
Seit wann ist hinterher x==5 !?
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
Smou
myCSharp.de - Member



Dabei seit:
Beiträge: 341
Herkunft: Fürstenfeldbruck

beantworten | zitieren | melden

Zitat


int x=1;
x+=1;
int y=x+x;
x+=1;

Seit wann ist hinterher x==5 !?


int x = 1; 
x += 1; // x = x + 1 oder auch einfach x++ entspricht  1 + 1 Ergebnis: 2
int y = x + x; // da x nun 2 ist und ich hier 2 + 2 rechne hat y den wert 4
x += 1; // x = x + 1 oder auch einfach x++ entspricht x = 4 + 1 Ergebnis 5

result:

y = 4
x = 5

Nur die Kenner können mit 10 Fingern bis 1023 zählen !!

private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
private Nachricht | Beiträge des Benutzers
Tachyon
myCSharp.de - Member

Avatar #avatar-2846.jpg


Dabei seit:
Beiträge: 104

beantworten | zitieren | melden

Was ne Brainfuck Aufgabe ^^

X wird 2 mal inkrementiert -> x = 3.

Der erste Wert der Addition ist 1 da x erst um eins erhöht wird nachdem der Wert in den
Ausdruck eingeflossen ist. Der 2. Wert ist 3, da x ja schonmal durch x++ inkrementiert wurde und dann nochmal durch ++x (= inkrement bevor der Wert für den Ausdruck genutzt wird) --> y = 4.
Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#
private Nachricht | Beiträge des Benutzers
Smou
myCSharp.de - Member



Dabei seit:
Beiträge: 341
Herkunft: Fürstenfeldbruck

beantworten | zitieren | melden

da würd ich doch sagen das zum glück sowas nicht geht....


int x = 1;
x += x++;

grüße =D
Nur die Kenner können mit 10 Fingern bis 1023 zählen !!

private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
private Nachricht | Beiträge des Benutzers
Tachyon
myCSharp.de - Member

Avatar #avatar-2846.jpg


Dabei seit:
Beiträge: 104

beantworten | zitieren | melden

Wieso soll das nicht gehen?

x += x++ -> x = 2;

... aber irgendwie verstehe ich nicht genau warum. Ich hätte jezt 3 erwartet. ^^
Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#
private Nachricht | Beiträge des Benutzers
Smou
myCSharp.de - Member



Dabei seit:
Beiträge: 341
Herkunft: Fürstenfeldbruck

beantworten | zitieren | melden

der compiler sollte einen fehler werfen..... zumindest laut aussagen verschiedener dokus....
aber selbst hab ich es glaub ich noch nie ausprobiert... aber versuchs doch mal ob es geht...

ich meine es hängt damit zusammen das der compiler nicht weiß was er zuerst ausführen soll.... addieren oder inkrementieren.... vertauscht man die aktionen kommt man jeweils auf verschiedene ergebnisse.


x = 1; 
x++; // 2
x = x + x; // 2 + 2 = 4
// oder
x = 1; 
x = x + x; // 1 + 1= 2
x++; // 3

bitte korrigiert mich wenn ich falsch denke und fehlinformationen habe

Grüße
Nur die Kenner können mit 10 Fingern bis 1023 zählen !!

private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Smou,
Zitat
der compiler sollte einen fehler werfen..... zumindest laut aussagen verschiedener dokus....
aber selbst hab ich es glaub ich noch nie ausprobiert... aber versuchs doch mal ob es geht...
bitte versuche doch sowas bitte selber erst, damit du hier nicht was falsches postest. Es geht nämlich. Warum auch nicht?
Zitat
ich meine es hängt damit zusammen das der compiler nicht weiß was er zuerst ausführen soll.... addieren oder inkrementieren....
Da es für alle Operatoren Vorrangregeln gibt, weiß der Compiler ganz genau, was er zuerst tun muss.

herbivore
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

mir ist eben folgender Code über den weg gelaufen:


int foo()
{...}
.
.
.
if(foo() != 0 ? true : false)
{...}
.
.
.
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Das Thema passt irgendwie zu Halloween.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von zero_x am .
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

[OFFTOPIC]
Zitat von zero_x
Das Thema passt irgendwie zu Halloween.
Naja - zu Halloween passt eher dieses Posting (ein Klassiker)
[/OFFTOPIC]
private Nachricht | Beiträge des Benutzers
tkrasinger
myCSharp.de - Member



Dabei seit:
Beiträge: 574
Herkunft: Enzesfeld (Niederösterreich)

beantworten | zitieren | melden

Ts, also das ist von einem Ex-Kollegen (hab durchgesetzt ihn zu kündigen):

http://www.krasinger.at/public/nc_6.jpg
http://www.krasinger.at/public/nc_7.jpg
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.643

beantworten | zitieren | melden

@tkrasinger: und so einen Künstler habt ihr entlassen?
private Nachricht | Beiträge des Benutzers
Haggy
myCSharp.de - Member

Avatar #avatar-2608.png


Dabei seit:
Beiträge: 1.134
Herkunft: Karlsruhe

beantworten | zitieren | melden

hahah bei solchen codes hätte ich einen infarkt bekommen
Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Zitat
hahah bei solchen codes hätte ich einen infarkt bekommen

wenn du wüßtest, was ich schon alles für abstrakte coding-kunst gesehen habe.....

zugegeben, das was tkrasinger zeigt, hat mir auch ein lächeln gezaubert aber solche dinge sehe ich leider nciht zum ersten mal.

z.b. wir hatten mal in einem projekt ein SQL-DAL mit 6000 zeilen (da hat sogar der resharper den geist aufgegeben). 30% davon waren alle möglichen variationen diverser abfragen und alle hatten eins gemeinsam. den stringbuilder.
nach einem komplettrefactoring hatten wir nur ncoh 700 zeilen code und ca 20% mehr funktionalität.

oder in einem anderen projekt habe ich eine klasse entdeckt, die über 1000 methoden hatte. das war ziemlich unbeqem, die zu benutzen.

wiederum ein anderes mal habe ich eine klasse entdeckt die 60.000 zeilen hatte....

das sind alles so sachen, die mein herz immer wieder aufs neue erquicken^^

diese kleinigkeiten, wie create graphics, thread.sleep, application.doevents oder vergessene dispose aufrufe regen mich daher nur noch rudimentär auf.
tkrasinger
myCSharp.de - Member



Dabei seit:
Beiträge: 574
Herkunft: Enzesfeld (Niederösterreich)

beantworten | zitieren | melden

Etwas konnte ich meinen Leuten schon abgewöhnen. Also:

if( SomeMoreComplexBool )
   return true;
else
   return false;

schreiben die nicht mehr, da wird brav:

return SomeMoreComplexBool; 

geschrieben, allerdings geht das nur in dem Fall, andersrum leider noch ned ganz ...

return (SomeMoreComplexBool) ? false : true;

das man da den ! Operator nehmen könnte ham die meisten noch ned überrissen ...
private Nachricht | Beiträge des Benutzers
Juki
myCSharp.de - Member



Dabei seit:
Beiträge: 31
Herkunft: München

beantworten | zitieren | melden

Zitat von tkrasinger
Etwas konnte ich meinen Leuten schon abgewöhnen.

Darf ich fragen, wie viel Erfahrung die Kollegen haben und wo und wann sie Programmieren gelernt haben?
private Nachricht | Beiträge des Benutzers
tkrasinger
myCSharp.de - Member



Dabei seit:
Beiträge: 574
Herkunft: Enzesfeld (Niederösterreich)

beantworten | zitieren | melden

Zitat von Juki
Darf ich fragen, wie viel Erfahrung die Kollegen haben und wo und wann sie Programmieren gelernt haben?

Also den den wir gekündigt hatten, der hatte 4 Jahre Erfahrung im .NET Bereich. Wie er das so lange geschafft hat und wo er das (nicht) gelernt hat, keine Ahnung.

Sonst haben wir im Moment ein paar Leute aus der schule und ein paar Umsteiger.

Leider alle mit relativ wenig Erfahrung ... -> Siehe dazu auch: Wien: .NET Entwickler gesucht
private Nachricht | Beiträge des Benutzers
assi
myCSharp.de - Member

Avatar #avatar-2349.jpg


Dabei seit:
Beiträge: 114
Herkunft: Uterus

beantworten | zitieren | melden

@tkrasinger ich leide mit dir:

Was ich immer wieder im hiesigen Code finde und jedesmal wieder anfange zu weinen ist:

public bool Funktion1()
{}

public bool andereFunktion()
{
   (...)
   if (Funktion1() == true)
   {
      return true;
   }
   else
   {
      return false;
   }
}

..das schöne, der Typ ist zwar nicht de jure, aber de facto mir vorgesetzt. (...noch :evil: )
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von assi am .
And in addition to the darkness there was also me.
And I moved upon the face of the darkness and I saw that I was alone.
Let There Be Light!
private Nachricht | Beiträge des Benutzers
MaXeM
myCSharp.de - Member



Dabei seit:
Beiträge: 198

beantworten | zitieren | melden

@tkrasinger
Da gibt es noch eine Steigerung :>

In einem alten VB Projekt in welchem ich mal ein paar Änderungen machen musste bin ich fast gestorben ^^ Es ist in VB 6 geschrieben, keine Auto Einrückung, das sah dann ungefähr so aus:

If bla = 1 Then
'viel Text für viel Scrollspaß
If bla = 2 Then
'noch mehr Scrollspaß
If bla = 3 Then
'und weils so schön ist, noch mehr!
If .....
..
End If
End If
End If
....
..

Das ging teils bis in die sechste Ebene. Um die ganze Sache noch etwas interessanter zu machen sind natürlich zwischendrin auch mal End Ifs, auskommentierte End Ifs etc.
Den obligatorischen alten, teils seitenlangen, Code der einfach auskommentiert wurde (weil man ihn ja irgendwann noch einmal brauchen könnte) erwähne ich mal nicht
private Nachricht | Beiträge des Benutzers
norman_timo
myCSharp.de - Member

Avatar #avatar-1775.jpeg


Dabei seit:
Beiträge: 4.506
Herkunft: Wald-Michelbach (Odw)

beantworten | zitieren | melden

Hallo MaXeM,

ist VB6 nicht schon CodingHorror by Design? ;-) [Ich weiß wie Du fühlst, hab das jüngst auch mitmachen müssen, denn selbst Neuentwicklungen waren in VB6 einzupflanzen *graus*]

Grüße
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
private Nachricht | Beiträge des Benutzers
D-eath
myCSharp.de - Member



Dabei seit:
Beiträge: 233
Herkunft: Ingolstadt

beantworten | zitieren | melden

Ich fand VB6 zwar immer toll und weiß, dass man damit tolle Sachen tun kann bis zu einem gewissen Masse... aber an MaXeM :-D
private Nachricht | Beiträge des Benutzers
assi
myCSharp.de - Member

Avatar #avatar-2349.jpg


Dabei seit:
Beiträge: 114
Herkunft: Uterus

beantworten | zitieren | melden

Zitat von tkrasinger
geschrieben, allerdings geht das nur in dem Fall, andersrum leider noch ned ganz ...

Warum nicht return !(SomeMoreComplexBool);

Oder übersehe ich gerade was?
And in addition to the darkness there was also me.
And I moved upon the face of the darkness and I saw that I was alone.
Let There Be Light!
private Nachricht | Beiträge des Benutzers
Spontifixus
myCSharp.de - Member

Avatar #avatar-3052.gif


Dabei seit:
Beiträge: 360
Herkunft: Hannover

beantworten | zitieren | melden

Zitat von assi
Oder übersehe ich gerade was?

Ja. Siehe:
Zitat von tkrasinger
das man da den ! Operator nehmen könnte ham die meisten noch ned überrissen ...

Gruß,
Markus
private Nachricht | Beiträge des Benutzers