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
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

huhu,

gerade im hier im Forum gesehen:

string[] strTaskIDArray;
[..]
foreach (Object obj in strTaskIDArray)
{
    String val = obj.ToString();

kein krasser Horror, aber naja, evtl. unter Anfängerfehler einzuordnen.

:-)

Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers
Florian Reischl
myCSharp.de - Experte

Avatar #avatar-2880.jpg


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

beantworten | zitieren | melden

Ich bin auch kein großer Fan von ==true (wobei ich's auch nicht sonderlich schlimm finde).

@Xynratron:
Wie wär's denn so?

if (b1 == (1 < 10)) 
{
   if (b2 == ("" == string.Empty)) 
   {
      reifen += "foo";
   }
   else 
   {
      reifen += "bar";
   }
}
else 
{
   if (b2 == (Math.Abs(Guid.NewGuid().GetHashCode()) ≥ 0))
   {
      reifen += "foo bar";
   }
   else 
   {
      // to ensure this will not happen...
      int i = 1 / (int)(object)0;
   }
}

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ß.
private Nachricht | Beiträge des Benutzers
Scavanger
myCSharp.de - Member

Avatar #avatar-3209.jpg


Dabei seit:
Beiträge: 323

beantworten | zitieren | melden

Wollt ihr hier den Wettbewerb für obskures C# eröffnen? :tongue:

Erinnert mich irgendwie an:

http://de.wikipedia.org/wiki/Just_another_Perl_hacker

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
private Nachricht | Beiträge des Benutzers
Florian Reischl
myCSharp.de - Experte

Avatar #avatar-2880.jpg


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

beantworten | zitieren | melden

Zitat von Scavanger
Wollt ihr hier den Wettbewerb für obskures C# eröffnen? :tongue:
Zwar nicht in C#, aber in T-SQL habe ich da spontan was beizutragen:
Hatte mal mit ein paar Leuten einen kleinen Contest
:-D
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ß.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Scavanger,
Zitat
Wollt ihr hier den Wettbewerb für obskures C# eröffnen?
nein, zumindest nicht in diesem Thread hier. Aber es gibt einen anderen Thread für genau das: Hello World kompliziert

herbivore
private Nachricht | Beiträge des Benutzers
JunkyXL
myCSharp.de - Experte

Avatar #avatar-3234.gif


Dabei seit:
Beiträge: 1732
Herkunft: Ein paar Bytes südlich von string

beantworten | zitieren | melden

Noch so ein heißer Kandidat, auch wenn nicht so gravierend:

public bool IsAlreadyInUse(string censored)
{
    // Indicates if the censored is already in Use
    bool isAlreadyInUse = false;

    // Loop through each censoredList
    foreach (CensoredItem item in censoredList)
    {
        if (item.Censored == censored)
        {
            isAlreadyInUse = true;
            break;
        }
    }

    // Return the Result
    return isAlreadyInUse;
}

Aus Ein-Zeiler mach X-Zeiler
So kann man auch ne Mücke zum Elefanten machen..

Sowas geht auch viel kürzer, indem man eine Contains-Methode in die Collection von censoredList einbaut.

public bool IsAlreadyInUse(string censored)
{
    return censoredList.Contains(censored);
}


Noch "schneller" gehts natürlich mit Extension Methods und LINQ ;)

public bool IsAlreadyInUse(string censored)
{
    return censoredList.Any(c => c == censored);
}

Original-Bezeichnungen wurden mit "censored" vertauscht.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JunkyXL am .
private Nachricht | Beiträge des Benutzers
userid14268
myCSharp.de - Member



Dabei seit:
Beiträge: 1620

beantworten | zitieren | melden

hei junky - so wie ich das sehe fragt er nach einem sub item namens Censored

foreach (CensoredItem item in censoredList)
{
    if (item.Censored == censored)
    {

ne moeglichkeit das kuezer zu schreiben waere

public bool IsAlreadyInUse(string censored)
{
    return censoredList.Any(c => c.Censored == censored);
}

das contains direkt funktioniert nicht
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid14268 am .
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,
zumidest könnte man die lokale Variable einsparen:

public bool IsAlreadyInUse(string censored)
{
    // Loop through each censoredList
    foreach (CensoredItem item in censoredList)
    {
        if (item.Censored == censored)
        {
            return true;
        }
    }
    return false;
}
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1407

beantworten | zitieren | melden

Wie wärs mit:

public bool IsAlreayInUse(string consored)
{
return (from ConsoredItem item in censoredList
           where item.Censored == censored
           select item).Count() > 0;
}

?
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

@pdelvo

auch sehr fein -:)
Hänge aber momenta noch auf .NET 2.0, daher "zumindest" ;-)

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
userid14268
myCSharp.de - Member



Dabei seit:
Beiträge: 1620

beantworten | zitieren | melden

oder direkt die kurze syntax:

return censoredList.Where(i => i.Censored == censored).Count() > 0;
private Nachricht | Beiträge des Benutzers
Cat
myCSharp.de - Member

Avatar #avatar-3070.jpg


Dabei seit:
Beiträge: 790

beantworten | zitieren | melden

Wobei die LINQ-Variante immer die gesamte Liste durchiteriert, auch wenn das Element gleich am Anfang gefunden werden würde, d.h. im Schnitt N statt N/2 Durchläufe.

Und ob man bei der foreach-Schleife mit einer lokalen Variable arbeitet ist nur Geschmackssache (in Bezug auf "nur ein 'return' pro Methode").

Unter C# 3.0 (nicht zu verwechseln mit Target-Framework .NET 2.0 !!! -) würde ich daher auch die Kurzvariante von Mr. Evil mit 'Any' wählen (ich denke, daß Any intern genauso abbrechend arbeitet, wie die handgeschriebene Schleife)...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Cat am .
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Zitat
Unter C# 3.0 (nicht zu verwechseln mit Target-Framework .NET 2.0 !!! -)

für extensionmethods (und "any" ist eine) benötigt man c# 3 und .net 3.x
0815Coder
myCSharp.de - Member



Dabei seit:
Beiträge: 770

beantworten | zitieren | melden

noch besser (weils nicht die ganze Liste iterieren muss):

return censoredList.Any(i => i.Censored == censored);
loop:
btst #6,$bfe001
bne.s loop
rts
private Nachricht | Beiträge des Benutzers
D-eath
myCSharp.de - Member



Dabei seit:
Beiträge: 240
Herkunft: Ingolstadt

beantworten | zitieren | melden

string ddlXValue = (string)ddlX.SelectedValue.ToString();

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



Dabei seit:
Beiträge: 210

beantworten | zitieren | melden

[offtopic]
Zitat von D-eath

string ddlXValue = (string)ddlX.SelectedValue.ToString();

...
Da wollte wohl jemand ganz sicher gehen.
[/offtopic]
private Nachricht | Beiträge des Benutzers
D-eath
myCSharp.de - Member



Dabei seit:
Beiträge: 240
Herkunft: Ingolstadt

beantworten | zitieren | melden

Und das an sehr vielen verschiedenen Stellen :/
private Nachricht | Beiträge des Benutzers
Midnight Run
myCSharp.de - Member

Avatar #avatar-3029.jpg


Dabei seit:
Beiträge: 82
Herkunft: Hildesheim

beantworten | zitieren | melden

Habe hier gerade ein Projekt was ich weiterführen soll und habe folgenden Code gefunden.

Das Problem was es lösen soll ist das eine Datei eingelesen werden soll. Diese enthält eine Seriennummer die in ein Label eingetragen werden soll. Sprich, einfaches Parsing.

                if (File.Exists(swFile.FullName))
                {
                    int tmpCounter = 0;

                    StreamReader txtReader = File.OpenText("tmp/file.txt");
                    string tmp = String.Empty;
                    while ((tmp = txtReader.ReadLine()) != null)
                    {
                        if (tmpCounter == 1)
                            this.[B]label9[/B].Text = tmp;

                        tmpCounter++;
                    }

                    txtReader.Close();
                }

Das komplette Projekt durch wurden die Steuerelemente nicht benannt, sprich nur die automatischen Namen übernommen
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


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

beantworten | zitieren | melden

Das ganze konstrukt ist in meinen Augen schon horror (aber sehr weit verbreiteter). Aus dem mache man:


         if (!File.Exists(swFile.FullName))
            throw new FileNotFoundException("Bla"); // alternativ return;

         int tmpCounter = 0;

         StreamReader txtReader = File.OpenText("tmp/file.txt");
         string tmp = String.Empty;
         while ((tmp = txtReader.ReadLine()) != null)
         {
            if (tmpCounter != 1)
               continue;

            this.label9.Text = tmp;
            tmpCounter++;
         }

         txtReader.Close();
Jetzt mal ohne irgendwas außer einigen Bedingungen zu änder finde ich das viel schöner (Macht bei dem Beispiel jetzt nicht so viel aus aber man stelle sich das mal in einer verschachtelten Schleife mit zig Bedingungen vor). Lieber prüfen ob was nicht passt als prüfen ob es passt. Das setzt halt in den meisten Fällen voraus das man kleinere Methoden macht.
private Nachricht | Beiträge des Benutzers
TheBrainiac
myCSharp.de - Member

Avatar #avatar-3152.png


Dabei seit:
Beiträge: 832
Herkunft: /dev/null

beantworten | zitieren | melden

[OFFTOPIC]
Zitat von jaensen

// ...
int tmpCounter = 0;
// ...
while (/*...*/)
{
    if (tmpCounter != 1)
        continue;
    // ...
    tmpCounter++;
}
// ...

So wird tmpCounter aber nie inkrementiert... :evil:
[/OFFTOPIC]
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von TheBrainiac am .
There are 10 types of people in the world:
Those, who think they understand the binary system
Those who don't even have heard about it
And those who understand "Every base is base 10"
private Nachricht | Beiträge des Benutzers
Corpsegrinder
myCSharp.de - Member



Dabei seit:
Beiträge: 416

beantworten | zitieren | melden

Das hier ist ein Neighbour-Joining-Algorithmus für phylogenetische Bäume.... mit sowas muss man sich als Student rumschlagen... schlimm genug.... aber wenn die Kommilitonen dann so einen Code produzieren wird es pervers...


private static BinaryTree neighbourJoin (List<List<String>> list) {
   BinaryTree resTree=null;


   //Iteration des Algorithmuss
   for (int u=0;u<list.size ()-1;u++){

      //list kopieren nach oldlist
      List<List<String>> oldlist = new ArrayList<List<String>> ();
      for (int i =0;i<list.size ();i++){
         oldlist.add (new ArrayList<String> ());
         for (int k=0;k<list.size ()-1;k++){
            oldlist.get (i).add (new String (list.get (i).get (k)));
         }
      }

      // Nettodivergenz Schritt1
      System.out.println ("Schritt 1 Matrix"+list);
      Map<String, Double> nettodivergenz = new HashMap<String, Double> ();
      double nettodiv = 0.0;
      double nettodivsum = 0.0;
      int j = 0;
      for (int i = 1; i < list.size (); i++) {
         nettodivsum = 0.0;
         for (int k = 0; k < list.size () - 1; k++) {
            nettodivsum += Double.parseDouble (list.get (i).get (k));
         }
         nettodiv = (1.0 / (list.size () - 1 - 2) * nettodivsum);
         nettodivergenz.put (list.get (0).get (j), nettodiv);
         j++;
      }
      System.out.println ("Schritt 1 Nettodovergenz: "+nettodivergenz);

      //Schritt 2
      List<List<String>> zwischenMatrix = new ArrayList<List<String>> ();
      double zMvalue = 0.0;
      for (int i = 1; i < list.size (); i++) {
         List<String> innerList = new ArrayList<String> ();
         for (int k = 0; k < list.size () - 1; k++) {
            if (i - 1 == k) {
               zMvalue = 0.0;
               innerList.add (String.valueOf (zMvalue));
            } else {
               zMvalue = Double.parseDouble (list.get (i).get (k))
                     - (nettodivergenz.get (list.get (0).get (i - 1))
                     + nettodivergenz.get (list.get (0).get (k)));
               innerList.add (String.valueOf (zMvalue));
            }
         }
         zwischenMatrix.add (innerList);
      }
      System.out.println ("Schritt 2 ZwischenMatrix: "+zwischenMatrix);

      // Schritt 3
      double min = Double.parseDouble (zwischenMatrix.get (0).get (0));
      List<Number> minVals = new ArrayList<Number> ();
      for (int i = 0; i < zwischenMatrix.size (); i++) {
         for (int k = 0; k < zwischenMatrix.size (); k++) {
            if (Double.parseDouble (zwischenMatrix.get (i).get (k)) < min) {
               min = Double.parseDouble (zwischenMatrix.get (i).get (k));
               minVals.add (min);
               minVals.add (i);
               minVals.add (k);
            }
         }
      }
      double disij=Double.valueOf (list.get ((Integer)minVals.get (1)+1).get ((Integer)minVals.get (2)));
      String iij = list.get (0).get ((Integer)minVals.get (1));
      String jij = list.get (0).get ((Integer)minVals.get (2));
      String ij = iij+jij;
      double disiij= (disij+nettodivergenz.get (iij)
            -nettodivergenz.get (jij))/2;
      double disjij= (disij+nettodivergenz.get (jij)
            -nettodivergenz.get (iij))/2;
      System.out.println ("Schritt 3 MinVal: " +minVals);
      System.out.println ("Schritt 3 "+ij+" zu "+iij+" "+disiij);
      System.out.println ("Schritt 3 "+ij+" zu "+jij+" "+disjij);

      //--> Teilbaum erzeugen
      BinaryTree t = Graphs.leaf (iij);
      BinaryTree t1 = Graphs.leaf (jij);
      BinaryTree combined = t.concat (t1,disiij, disjij);
      System.out.println ("Schritt 3 Teilbaum: "+combined);


      //Schritt 4
      list.remove ((Integer)minVals.get (2)+1);
      list.remove ((Integer)minVals.get (1)+1);
      for (int i=0;i<list.size ();i++){
         int a = (Integer)minVals.get (2);
         int b = (Integer)minVals.get (1);
         list.get (i).remove (a);
         list.get (i).remove (b);
      }
      System.out.println ("Schritt 4 Löschung: "+list);
      List<String> duklist = new ArrayList<String> ();
      for (int i=1;i<list.size ();i++){
         double dik=Double.valueOf (oldlist.get ((Integer)minVals.get (2)+1).get (i+1));
         double djk=Double.valueOf (oldlist.get ((Integer)minVals.get (1)+1).get (i+1));
         double dij=Double.valueOf (oldlist.get ((Integer)minVals.get (1)+1).get ((Integer)minVals.get (2)));
         double duk= (dik+djk-dij)/2;
         duklist.add (String.valueOf (duk));
      }
      duklist.add (String.valueOf (0.0));
      int s = list.size ();
      list.get (0).add (ij);
      for (int i=0;i<s+1;i++){
         if (i==s)list.add (duklist);
         if (i>0&&i<s)list.get (i).add (duklist.get (i-1));
      }
      System.out.println ("Schritt 4 duklist: "+duklist);
      System.out.println ("Schritt 4 Ergebnisliste: "+list);


      //Teilbaum erzeugen Teil 2
      if (resTree==null)resTree=combined;
      else if (list.size ()-1==2){
         resTree=resTree.concat (combined,Double.valueOf (duklist.get (0))/2);
      }else{
         resTree=resTree.concat (combined,disij);
         System.out.println (resTree);
      }


   }
   return resTree;
}
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


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

beantworten | zitieren | melden


@Schamese
Uh, eiskalt erwischt. X(
peinlich, peinlich... ;-)
private Nachricht | Beiträge des Benutzers
Cat
myCSharp.de - Member

Avatar #avatar-3070.jpg


Dabei seit:
Beiträge: 790

beantworten | zitieren | melden

Zitat von Midnight Run
Habe hier gerade ein Projekt was ich weiterführen soll und habe folgenden Code gefunden.

Das Problem was es lösen soll ist das eine Datei eingelesen werden soll. Diese enthält eine Seriennummer die in ein Label eingetragen werden soll. Sprich, einfaches Parsing.


                if (File.Exists(swFile.FullName))
                {
                    int tmpCounter = 0;

                    StreamReader txtReader = File.OpenText("tmp/file.txt");
                    string tmp = String.Empty;
                    while ((tmp = txtReader.ReadLine()) != null)
                    {
                        if (tmpCounter == 1)
                            this.[B]label9[/B].Text = tmp;

                        tmpCounter++;
                    }

                    txtReader.Close();
                }

Das komplette Projekt durch wurden die Steuerelemente nicht benannt, sprich nur die automatischen Namen übernommen :(

Wenn nur die 2. Zeile der Datei eingelesen werden soll, dann kann die Schleife danach doch auch sofort mit 'break' verlassen werden. Geschweige denn, daß die Methode nur die Seriennummer zurückliefern sollte und nicht direkt in die Controls reinschreiben sollte.

Und zu Corpsegrinder's Code:
man sollte dem Kommilitonen mal ein Wörterbuch schenken
Zitat
... des Algorithmuss
Dann doch eher: "des Algorithmuses"

Und seit wann ist 'ArrayList' ein Generic?
Zitat
List<List<String>> oldlist = new ArrayList<List<String>> ();

Und insgesamt ist das doch toller Code: imperative Programmierung mit einer objektorientierten Sprache!
private Nachricht | Beiträge des Benutzers
Corpsegrinder
myCSharp.de - Member



Dabei seit:
Beiträge: 416

beantworten | zitieren | melden

Zitat von Cat
Und seit wann ist 'ArrayList' ein Generic?
Zitat
List<List<String>> oldlist = new ArrayList<List<String>> ();

In Java ist ArrayList ein Generic ;-)
private Nachricht | Beiträge des Benutzers
Cat
myCSharp.de - Member

Avatar #avatar-3070.jpg


Dabei seit:
Beiträge: 790

beantworten | zitieren | melden

Ups, ja. System.out.println ist eindeutig Java, aber oberflächlich hätte es auch C# sein können (aber alle Methoden sind ja mit kleinem Anfangsbuchstaben (igitt!) und bis auf ArrayList<> eben -)
private Nachricht | Beiträge des Benutzers
Lennart
myCSharp.de - Member



Dabei seit:
Beiträge: 429
Herkunft: Bawü

beantworten | zitieren | melden


for (int i = 0; i < intcount; i++)
{
     if (intcount - i - 1 > 0)
         {
              [...]
         }
}

grad in altem code von mir gefunden, peinlich peinlich ...
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

for( int i = 0; i < mystring.Length; i++)
{
mySByteArray[i] = SByte.Parse(char.ConvertToUtf32(mystring,i).ToString());
}

also umständlicher und inperfomanter geht es nur noch mit viel mühe....
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

beantworten | zitieren | melden

Na super und ich werde ab heute gewzungen bei uns in der Firma folgendes zu schreiben:



bool b = true;
if (b == true) //Warum ver#[email protected]! noch mal darf ich nicht mehr if (b) schreiben!? *KOTZ*

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
Schlopp
myCSharp.de - Member

Avatar #avatar-3124.jpg


Dabei seit:
Beiträge: 299
Herkunft: Stuttgart, München, Schweiz

beantworten | zitieren | melden

if (value != null)
{
    throw new ArgumentNullException("...");
}
Den Fehler (der nicht von mir stammt) zu finden hat mich neulich ca 30 Minuten gekostet.
There are 10 kind of people, those who understand binary and those who don't.
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Zitat von dr4g0n76



bool b = true;
if (b == true) //Warum ver#[email protected]! noch mal darf ich nicht mehr if (b) schreiben!? *KOTZ*


Vielleicht weil Dein Chef zu wenig lange in der Baumschule war :-)
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers