Laden...

Coding Styles Horror

Erstellt von Khalid vor 15 Jahren Letzter Beitrag vor 3 Jahren 364.670 Views
1.564 Beiträge seit 2007
vor 14 Jahren

Hallo Stipo

Der Präfix der Klassen ist mein geringstes Problem. Schlimmer ist die Tatsache dass hier überhaupt eigene Klassen für String, DateTime, Stream, File, ... gibt.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

183 Beiträge seit 2006
vor 14 Jahren

Hallo Stipo

Der Präfix der Klassen ist mein geringstes Problem. Schlimmer ist die Tatsache dass hier überhaupt eigene Klassen für String, DateTime, Stream, File, ... gibt.

Grüße
Flo

Hallo Flo,

ich kenne die Implementierung Deiner aufgeführten Klasse nicht aber ich denke das kommt einfach daher das stdstring nicht Unicode-Fähig ist und man sich so eine String Klasse schrieb um genau dies zu erreichen. Da hat man immer seine eigene String-Klasse geschrieben, kenn ich selber noch ... von früher 😃 Jetzt gibts ja zum Glück C++0x und stdu16string/stdu32string wenn auch derzeit nur vom g++.
Aber ich denke eher das dies in Deinem Fall einfach eine "Nachbildung" von std
string ist 😃
Was mich da noch mehr dran stört ist das C am Anfang des Klassennamens (MFC lässt Grüßen, dort wurde es aber zu einer Zeit gemacht als es noch keine Namespaces gab ...) und das die String-Klasse von einem Stream erbt, dies wiederstrebt mir irgendwie 😃

Gut Schuß
VuuRWerK 😉

U
1.578 Beiträge seit 2009
vor 14 Jahren

die unicode variante des stdstring ist das stdwstring - gabs schon lang - das einzigste was sein kann ist das diese klasse automatisch je nach compiler setting zwischen stdstring und stdwstring gewechselt hat
ich hatte dafuer immer ein define gebastelt und dann nur noch tstring verwendet

stdstring == basic_string<char>
std
wstring == basic_string<wchart_t>
typedef basic_string<TCHAR> tstring;

die vererbungen sind wirklich komisch
string von stream
stream von object
time von object
file von stream

object implementiert bestimmt ein ToString() #ggg

183 Beiträge seit 2006
vor 14 Jahren

die unicode variante des stdstring ist das stdwstring - gabs schon lang - das einzigste was sein kann ist das diese klasse automatisch je nach compiler setting zwischen stdstring und stdwstring gewechselt hat

Imho ist stdwstring nicht wirklich unicode-fähig sondern nur eine "wide"-char-string Variante, d.h. man kann pro Zeichen 2 byte belegen, das komplette Unicode hat aber 4 (UC4). Es gibt noch eine UC2-Variante wo man wieder stdwstring benutzen kann, hat dann aber nur eine beschränkte Unicode Unterstützung.

ich hatte dafuer immer ein define gebastelt und dann nur noch tstring verwendet

stdstring == basic_string<char>
std
wstring == basic_string<wchart_t>
typedef basic_string<TCHAR> tstring;

TCHAR ist nur ein typedef auf wchar_t 😉
Hier ein Ausschnitt aus der tchar.h:


ifndef _TCHAR_DEFINED
#if     !__STDC__
typedef wchar_t     TCHAR;
#endif
#define _TCHAR_DEFINED
#endif

die vererbungen sind wirklich komisch
string von stream
stream von object
time von object
file von stream

object implementiert bestimmt ein ToString() #ggg

Und natürlich auch eine Copy/Clone, Finalize etc ... Methode xD

Gut Schuß
VuuRWerK 😉

U
1.578 Beiträge seit 2009
vor 14 Jahren

ich hatte dafuer immer ein define gebastelt und dann nur noch tstring verwendet

stdstring == basic_string<char>
std
wstring == basic_string<wchart_t>
typedef basic_string<TCHAR> tstring;
TCHAR ist nur ein typedef auf wchar_t 😉
Hier ein Ausschnitt aus der tchar.h:

  
ifndef _TCHAR_DEFINED  
#if     !__STDC__  
typedef wchar_t     TCHAR;  
#endif  
#define _TCHAR_DEFINED  
#endif  
  

ich weiss, ist n bissl bloed ausgedrueckt - die ersten beiden zeilen sollte nur zeigen was string und wstring eigentlich ist und die dritte zeile zeigt das was ich sonst immer mach

458 Beiträge seit 2007
vor 14 Jahren

Heute gefunden:


        string strdatemonth = Convert.ToString(DateTime.Now.Month);
        string strdateyear = Convert.ToString(DateTime.Now.Year);
        string strdate = Convert.ToString((DateTime.Now.Month) + "." + DateTime.Now.Year);
        if (Convert.ToInt32(strdatemonth) < 10)
        {
            strdatemonth = "0" + Convert.ToString((DateTime.Now.Month));
        }
        tbxData.Text = "01." + strdatemonth + "." + strdateyear;

und durch:


        DateTime? dtDate = DateTime.Now;
        tbxDataFrom.Text = "01." + Convert.ToString(dtDate.Value.ToString("MM.yyyy"));

ersetzt.

Mit dem String strdate wurde uebrigens niewieder was getrieben..

be the hammer, not the nail!

D
67 Beiträge seit 2009
vor 14 Jahren

Hi aequitas,

Convert.ToString(dtDate.Value.ToString("MM.yyyy"))
könntest du noch zu
dtDate.Value.ToString("MM.yyyy")
verkürzen

2.891 Beiträge seit 2004
vor 14 Jahren

Wenn wir gerade dabei sind... 😉 Das ganze kann man völlig kürzen zu:

tbxDataFrom.Text = DateTime.Now.ToString("01.MM.yyyy");

@aequitas: Hat es einen bestimmten Grund, warum du DateTime.Now in einem Nullable zwischenspeicherst?

dN!3L

U
208 Beiträge seit 2008
vor 14 Jahren
  
        string strdatemonth = Convert.ToString(DateTime.Now.Month);  
        string strdateyear = Convert.ToString(DateTime.Now.Year);  
        string strdate = Convert.ToString((DateTime.Now.Month) + "." + DateTime.Now.Year);  
        if (Convert.ToInt32(strdatemonth) < 10)  
        {  
            strdatemonth = "0" + Convert.ToString((DateTime.Now.Month));  
        }  
        tbxData.Text = "01." + strdatemonth + "." + strdateyear;  
  

Ohje, dabei ist einer der großen Pluspunkte des .NET Frameworks vor allem der, dass man sich solche Sachen sparen kann. Sehe teilweise bei mir in der Firma auch ähnliche Kunststücke. Dass die Leute sich nicht mal ein wenig mit dem Framework auseinandersetzen können... 😉

  
        DateTime? dtDate = DateTime.Now;  
        tbxDataFrom.Text = "01." + Convert.ToString(dtDate.Value.ToString("MM.yyyy"));  
  

An der Lösung stören mich aber ehrlich gesagt auch ein paar Dinge: 1. Wieso benutzt du Nullable DateTime, wenn darin sowieso mit DateTime.Now auf jeden Fall ein Wert gespeichert wird? 2. Die ToString-Methode gibt ja sowieso einen String zurück, also wieso nochmal mit Convert.ToString in einen String konvertieren? Außerdem könnte man die ToString-Methode auch folgendermaßen aufrufen:

dtDate.Value.ToString("01.MM.yyyy");

😉

EDIT: Oh, zu langsam... 🙁

458 Beiträge seit 2007
vor 14 Jahren

@aequitas: Hat es einen bestimmten Grund, warum du DateTime.Now in einem Nullable zwischenspeicherst?

Weil ich an anderer stelle auf das .HasValue Property zugreife.

be the hammer, not the nail!

5.941 Beiträge seit 2005
vor 14 Jahren

Hallo zusammen

Was ganz ähnliches:


01.DateTime now = DateTime.Now;   
02.string fileName = now.Year.ToString("0000")    
03.    + now.Month.ToString("00") + now.Day.ToString("00") + "_"    
04.    + now.Hour.ToString("00") + now.Second.ToString("00")    
05.    + now.Millisecond.ToString("000") + ".txt";  

vs


01.DateTime jetzt = DateTime.Now;   
02.string fileName = jetzt.ToString("yyyyMMdd_HHmmss_FFF") + ".txt";  

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

390 Beiträge seit 2008
vor 14 Jahren

zwar nicht unbedingt coding style horror aber trotzdem interessant:

gerade im Quake Live Forum gelesen, wo es darum geht in welcher sprache die engine geschrieben wurde (tatsächlich in C):

C++ is unlikely. All id Tech engines are written in C... I dont see why that should have been changed for QL... You don't really need C++ since you can emulate classes with structs and function pointers... you can completely avoid C++ and co-workers who are fond of obfuscating the codebase by overloading operators.

Schön, dass man Fuktionszeiger in Strukturen laden kann, aber Klassen würde ich das nicht nennen.

Geschweige denn wüsste ich nicht wie man den this zeiger emulieren will 🤔
... ausser natürlich per Parameter, was aber redundant wäre (meineStruktur.Operation(&meineStruktur, ...)

using Skill

1.346 Beiträge seit 2008
vor 14 Jahren

Mal ne Frage ob ich hier coding style horror schreibe. ist das io?


bool? value = GetFuckingBool();

if(value == true)
...

Gibt es eine andere Möglichkeit um auf true zu prüfen?

Gruß pdelvo

2.891 Beiträge seit 2004
vor 14 Jahren

Geschweige denn wüsste ich nicht wie man den this zeiger emulieren will ... ausser natürlich per Parameter, was aber redundant wäre meineStruktur.Operation(&meineStruktur, ...)

Wie in .NET auch: Nicht-statische Funktionen unterscheiden sich von statischen auch nur darin, dass der this-Pointer der erste (implizite) Parameter ist. Also einfach Operation(&meineStruktur, ...)

@pdelvo:

if (value.HasValue && value.Value) ...

😉

6.911 Beiträge seit 2009
vor 14 Jahren

@pdelvo:

Ich würds so machen:

if (value?? false)

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

F
240 Beiträge seit 2006
vor 14 Jahren

gfoidl: Ich würd den fancy name operator nicht benutzen, denn er ist nicht so bekannt. Ich find dn!3ls version besser, weil ich mit einem Blick sehen kann, was genau gemeint ist, bei value?? false nicht. "Sowenig wie möglich, soviel wie nötig" wäre hier ganz angebracht, ich find die etwas höhere verbosity von dn!3l lesbarer. Es ist nicht nötig, aber hübscher und schneller ohne zu denken sichtbar.

6.911 Beiträge seit 2009
vor 14 Jahren

Ich würd den fancy name operator nicht benutzen, denn er ist nicht so bekannt.

*fancy name* := coalesce, Bekanntheitsgrad: Kommt auf den Programmierer drauf an 😁

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

F
240 Beiträge seit 2006
vor 14 Jahren

stimmt, ich kenn ihn auch, aber ich muss immer überlegen, was genau gemeint ist - und dann nehm ich die etwas längere Schreibweise, solange ich dann nicht groß drüber nachdenken muss 😉

1.564 Beiträge seit 2007
vor 14 Jahren

(Dafür hat er/sie dann was für's nächste mal gelernt. Ich finde den Operator praktisch und da er Teil der Sprache ist darf man ihn eigentlich schon verwenden 😉){"grey"}

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

2.760 Beiträge seit 2006
vor 14 Jahren

goto ist auch Teil der Sprache 😉

1.564 Beiträge seit 2007
vor 14 Jahren

Hoecker, sie sind raus!!

goto nach Hause! 😁

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

S
27 Beiträge seit 2009
vor 14 Jahren

Gerade gefunden:

bool result = true;

if (result == true)
{
    Console.WriteLine("The variable is set to true.");
}
else
{
    Console.WriteLine("The variable is set to false.");
}

Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!

>>>Klick<<<

6.911 Beiträge seit 2009
vor 14 Jahren

Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!

Ich hab auf das eh im Community-Index hingewiesen, aber anscheinend ist das Beispiel so klassisch das es nicht geändert wird 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

467 Beiträge seit 2007
vor 14 Jahren

Naja, as Beispiel kann man es ja geten lassen. Habe schon sinnlosere gesehen.
Wer liest solche Beispiele eigentlich? If und else sind ja schon als Wörter sebstklärend.

5.742 Beiträge seit 2007
vor 14 Jahren

Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!

Auch nett, ist die Beschreibung:

Die Ausgabe lautet The flag is set to true.

Der Schreiber hatte wohl keinen guten Tag 🙂

T
574 Beiträge seit 2008
vor 14 Jahren

Die Ausgabe lautet The flag is set to true.
Der Schreiber hatte wohl keinen guten Tag 😃

Im nächsten Absatz heißt es sogar:

Wenn die Auswertung des Ausdrucks zwischen den Klammern true ergibt, wird die Console.WriteLine("The boolean flag is set to true."); -Anweisung ausgeführt.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo winSharp93, hallo tkrasinger,

das hat nichts mit schlechtem Tag zu tun. Die Bezeichnung Flag wird auch für einzelne boolsche Werte verwendet. So war unter OS/2 in der ungarischen Notation das Prefix für (einfache) boolsche Werte f wie Flag.

herbivore

T
574 Beiträge seit 2008
vor 14 Jahren

ähem, das war auch nicht gemeint.

Wenn die Anweisung: Console.WriteLine("The **variable **is set to true."); lautet, kann die Ausgabe nicht "The **flag **is set to true." lauteten, oder gar die nicht vorhandene anweisung Console.WriteLine("The boolean flag is set to true."); ausgeführt werden.

Weiter gehts auch so im letzten beispiel, da sind die Anweisungen immer: Console.WriteLine("Character .." und die gemeinete Ausgabe wäre: "The character" ... einfach nur schlampig geschrieben.

E
200 Beiträge seit 2006
vor 14 Jahren

If object1 Is Nothing AndAlso object1.property1 Then
    object1 = new object()
End If

🤔

1.665 Beiträge seit 2006
vor 14 Jahren

Eben in unserem Sourcecode entdeckt schäm:

Boolean failure = false;
try
{
    // ...
    failure = false;
}
catch (Exception ex)
{
    failure = true;
}

// ...

if (failure)
{
    return false;
}
else
{
    return true;
}

Wurde erst kürzlich geschrieben.. 8o

1.665 Beiträge seit 2006
vor 14 Jahren

Eine weitere Delikatesse:

// Check this
if (this == null)
{
    return false;
}

und

if (this.Disposing == true)
{
    return false;
}

if (this.IsDisposed == true)
{
    return false;
}

return true;
6.911 Beiträge seit 2009
vor 14 Jahren

Hallo JunkyXL,

werdet ihr nach Zeilen bezahlt?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
8.746 Beiträge seit 2005
vor 14 Jahren

werdet ihr nach Zeilen bezahlt?

Das passiert eben, wenn Metriken zur Leistungserfassung eingesetzt werden... 😉

Khalid Themenstarter:in
3.511 Beiträge seit 2005
vor 14 Jahren

Also

if (this == null)

ist schon sehr genial...

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

Gelöschter Account
vor 14 Jahren

ich frage mich gerade in welcher sprache so ein konstrukt sinnvoll wäre... 😃

das ist echt eine perle unter den horror codes 😃

J
237 Beiträge seit 2008
vor 14 Jahren
Wie war das nochmal mit DoEvents()?

private void dowloadButton_Click(object sender, EventArgs e)
{
    // Start the download operation in the background.
    this.backgroundWorker1.RunWorkerAsync();

    // Disable the button for the duration of the download.
    this.dowloadButton.Enabled = false;

    // Wait for the BackgroundWorker to finish the download.
    while (this.backgroundWorker1.IsBusy)
    {
        // Keep UI messages moving, so the form remains 
        // responsive during the asynchronous operation.
        Application.DoEvents();
    }

    // The download is done, so enable the button.
    this.dowloadButton.Enabled = true;
}


Quelle: MSDN: BackgroundWorker.RunWorkerAsync()-Methode 8o

Grüße, JasonDelife.

Beim Programmieren löst man die Probleme, die man nicht hätte, programmierte man nicht.

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

sowas finde ich schon richtig traurig dass das in der Referenz für die .net-Sprachen zu finden ist. Gerade dort sollte mit gutem Beispiel voran gegangen werden 🙄

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

390 Beiträge seit 2008
vor 14 Jahren

uiuiuiui.. gerade ein altes PHP "Projekt" durchgesehen 😄


class user extends database

....


//Hole den Datensatz wo der nickname dem Post-Nickname entspricht
        $SQLString = "SELECT userID, password, mail, rights FROM user WHERE nickname ='" .
          $_POST['nickname'] . "'";
        $this->query( $SQLString );

Database beinhaltet irgendwie Funktionalitäten um auf die MySQL Datenbank zuzugreifen und wurde von User geerbt um z.b. Logindaten zu prüfen. DAS nenne ich mal Vererbung der Implementierung 😉

Und ja: Hi @ SQL Injection

😉

[edit]

würde wohl eher in Design Styles Horror passen und zwar von der übelsten Sorte 😉

using Skill

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo zusammen,

if (this == null)  

ist schon sehr genial...

das ist echt eine perle unter den horror codes 😃

Nein, das kann eine durchaus sinnvolle Abfrage sein.

ich frage mich gerade in welcher sprache so ein konstrukt sinnvoll wäre... 😃

Zum Beispiel in C#.

Der Grund ist einfach. Es gibt .NET Sprachen, in denen es möglich ist, Methoden ohne Instanz (also mit null) aufzurufen. Deshalb wird auch in einigen (grundlegenden) Framework-Klassen this auf null geprüft, z.B. in String.Equals. Die ganze Geschichte gibt es in Entropy Overload: Call vs CallVirt for C# non-virtual instance methods. Da andere Sprachen auch in C# geschriebene Methoden aufrufen können, hat man das Problem also auch in C#.

herbivore

297 Beiträge seit 2008
vor 14 Jahren

Das Beste was ich jemals gesehen habe, war die Implementierung einer Round()-Methode (Ironie die es ja im Framework nicht vordefiniert gibt Ironie), wobei nicht das anzunehmende "mal 10, abschneiden, durch 10" oder ähnliches verwendet wurde, sondern die Kommazahl erst in einen String umgewandelt wurde, dann mittels Split am Komma aufgeteilt wurde usw.
Ich konnt nicht mehr vor lachen 😄

There are 10 kind of people, those who understand binary and those who don't.

1.564 Beiträge seit 2007
vor 14 Jahren

(Ironie die es ja im Framework nicht vordefiniert gibt Ironie),

Schon mal versucht?

double d = 2.5;
Console.WriteLine(Math.Round(d, 0));

:evil:

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

297 Beiträge seit 2008
vor 14 Jahren

Naja gut, wenn man natürlich nur das versucht 😄

There are 10 kind of people, those who understand binary and those who don't.

Gelöschter Account
vor 14 Jahren

sehr sinnvoll interfaces zu verwenden wenn man:


public void Foo(ITueWas iArgument)
{
TueWas c = (TueWas)iArgument;
......
}

baaaah....

1.346 Beiträge seit 2008
vor 14 Jahren

Aus der SharpZLib:


		/// <summary>
		/// Test a value to see if it matches the filter.
		/// </summary>
		/// <param name="name">The value to test.</param>
		/// <returns>True if the value matches, false otherwise.</returns>
		public bool IsMatch(string name)
		{
			return (IsIncluded(name) == true) && (IsExcluded(name) == false);
		}

Gelöschter Account
vor 14 Jahren

noch was schönes:



switch (einString)
{
case "asdf":
arg1 = "asdf";
arg2 = "asdf";
arg3 = "asdf";
break;

case "wert":
arg1 = "wert";
arg2 = "wert";
arg3 = "wert";
break;

case "yxcv":
arg1 = "yxcv";
arg2 = "yxcv";
arg3 = "yxcv";
break;

case "fghj":
arg1 = "fghj";
arg2 = "fghj";
arg3 = "fghj";
break;

//usw usw... an die 20 mal....
}

unglaublich das es dem programmierer der das hier verbrochen hat überhaupt nciht aufgefallen ist, was für *#!? das ist.

Gelöschter Account
vor 14 Jahren

oh mann ich habe bei uns gerade eine 5000 zeilen !!! lange codedatei entdeckt die soviel shitcode enthält, das ich hier noch rund 100 posts machen könnte (kein scherz) ohne mich zu wiederholen (im gegensatz zu demjenigen der da programmiert hat)

z.b:



if(string.IsNullOrEmpty(mystring))
{
mystrring = GetMystringFromSomewhere();
// tue 30 zeilen lang etwas bestimmtes
}
else
{
// tue 30 zeilen lang exakt das selbe wie weiter oben
}


ich glaub der wurde echt nach LOC bezahlt und muss dafür ein fürstliches gehalt bekommen haben....

C
489 Beiträge seit 2007
vor 14 Jahren

Hallo

Ehrlich gesagt, kann ich nicht immer lachen, weil ich nicht verstehe, was an dem Codeschnipsel witzig sein soll (mir fehlen da die programmierkenntnisse), aber die letzten beiden von jack30lena waren wirklich köstlich.

chrische

390 Beiträge seit 2008
vor 14 Jahren

Das erste Beispiel von JAck30lena erinnert mich irgendwie an dasjenige von dem Typen der die Monatsnummern von 0-11 zu 1-12 umwandeln wollte und dann irgendwie sowas gemacht hat:


switch(month)
{
  case 0:
  month = 1;
  break;
  case 1:
  month = 2;
  break;
...
}

using Skill

1.130 Beiträge seit 2007
vor 14 Jahren

Wir haben unseren Infromathiklehrer, der uns Java beibringen soll gestern 5mal korrigiert (4mal davon ich).


1. + 2. + 3.)
istgleich boolean; //1.
istgleich=string1.equals(string2); //2.
if istgleich //3.
{
//machwas
}

4. + 5.)
void MyClass(string text) ; //4.
{
    MyClass.setText(text); //5. setText ist eine Instanzmethode der Basisklasse
}

6.)
Color red=new Color(255.0 ,0.0 ,0.0 );//6. er wollte eine überladung mit 3 floats benutzen

Der Typ macht dauernd Fehler an der Tafel hat auch schonmal folgendes geschrieben:


if(Methode(....))
{
    return true;
}
return false;

Sein Kommentar: "Sei doch nicht so Pingelich" 😁
Naja aber bis auf seine Syntaxunkenntnis ist er recht nett, beherscht die Theorie und kann auch ganz anschaulich erklären und so.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

1.665 Beiträge seit 2006
vor 14 Jahren

Zitat von: herbivore
Hallo zusammen,

if (this == null)  

ist schon sehr genial...

das ist echt eine perle unter den horror codes 😃
Nein, das kann eine durchaus sinnvolle Abfrage sein.

Jetzt weiß ich immerhin warum man virtuelle Methoden der Klasse nicht im Konstruktor aufruft/aufrufen sollte.

Ich kann aber zu 99,9% sagen, dass das nicht die Absicht unseres Mitarbeiters war.
Das ging eher in die Richtung "Sicher ist sicher" so wie hier:

Aus der SharpZLib:

  
public bool IsMatch(string name)  
{  
    return (IsIncluded(name) == true) && (IsExcluded(name) == false);  
}