Laden...

Coding Styles Horror

Erstellt von Khalid vor 15 Jahren Letzter Beitrag vor 3 Jahren 364.576 Views
X
1.177 Beiträge seit 2006
vor 14 Jahren

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!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

1.564 Beiträge seit 2007
vor 14 Jahren

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ß.

309 Beiträge seit 2008
vor 14 Jahren

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

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));}}

1.564 Beiträge seit 2007
vor 14 Jahren

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

Zwar nicht in C#, aber in T-SQL habe ich da spontan was beizutragen:
Hatte mal mit ein paar Leuten einen kleinen Contest
😄

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ß.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Scavanger,

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

1.665 Beiträge seit 2006
vor 14 Jahren

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.

U
1.578 Beiträge seit 2009
vor 14 Jahren

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

3.170 Beiträge seit 2006
vor 14 Jahren

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

1.346 Beiträge seit 2008
vor 14 Jahren

Wie wärs mit:

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

?

3.170 Beiträge seit 2006
vor 14 Jahren

@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

U
1.578 Beiträge seit 2009
vor 14 Jahren

oder direkt die kurze syntax:

return censoredList.Where(i => i.Censored == censored).Count() > 0;
771 Beiträge seit 2009
vor 14 Jahren

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)...

Gelöschter Account
vor 14 Jahren

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

0
767 Beiträge seit 2005
vor 14 Jahren

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

return censoredList.Any(i => i.Censored == censored);

loop:
btst #6,$bfe001
bne.s loop
rts

D
233 Beiträge seit 2008
vor 14 Jahren
string ddlXValue = (string)ddlX.SelectedValue.ToString();

...

U
208 Beiträge seit 2008
vor 14 Jahren
string ddlXValue = (string)ddlX.SelectedValue.ToString();  

... Da wollte wohl jemand ganz sicher gehen. 😁

D
233 Beiträge seit 2008
vor 14 Jahren

Und das an sehr vielen verschiedenen Stellen 😕

80 Beiträge seit 2008
vor 14 Jahren

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 🙁

2.760 Beiträge seit 2006
vor 14 Jahren

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.

795 Beiträge seit 2006
vor 14 Jahren
// ...  
int tmpCounter = 0;  
// ...  
while (/*...*/)  
{  
    if (tmpCounter != 1)  
        continue;  
    // ...  
    tmpCounter++;  
}  
// ...  

So wird tmpCounter aber nie inkrementiert... :evil:

`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"`
C
401 Beiträge seit 2007
vor 14 Jahren

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;
}

2.760 Beiträge seit 2006
vor 14 Jahren

@Schamese
Uh, eiskalt erwischt. X(
peinlich, peinlich... 😉

771 Beiträge seit 2009
vor 14 Jahren

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

... des Algorithmuss

Dann doch eher: "des Algorithmuses" 😜

Und seit wann ist 'ArrayList' ein Generic?

List<List<String>> oldlist = new ArrayList<List<String>> ();

Und insgesamt ist das doch toller Code: imperative Programmierung mit einer objektorientierten Sprache!

C
401 Beiträge seit 2007
vor 14 Jahren

Und seit wann ist 'ArrayList' ein Generic?

List<List<String>> oldlist = new ArrayList<List<String>> ();

In Java ist ArrayList ein Generic 😉

771 Beiträge seit 2009
vor 14 Jahren

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 -)

L
416 Beiträge seit 2008
vor 14 Jahren

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

grad in altem code von mir gefunden, peinlich peinlich ...

Gelöschter Account
vor 14 Jahren
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....

2.921 Beiträge seit 2005
vor 14 Jahren

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



bool b = true;
if (b == true) //Warum ver#$@! 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.

297 Beiträge seit 2008
vor 14 Jahren
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.

4.221 Beiträge seit 2005
vor 14 Jahren
  
  
bool b = true;  
if (b == true) //Warum ver#$@! 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...

799 Beiträge seit 2007
vor 14 Jahren

Bei uns in der Firma heißt es zwar nach offiziellen Coding-Richtlinien, dass con == true nicht verwendet werden soll, aber insbesondere die Kollegen aus Bratislava bauen es ein mit der Argumentation, dass sich dann die Mitarbeiter aus der Customer Service Abteilung besser zurechtfinden im Code.

Ich frag mich da immer, wenn die Leute schon bei IF-Bedingungen Hilfe brauchen, werden sie kaum den restlichen Code verstehen.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo zusammen,

das Thema == true oder nicht hat durchaus einiges Potenzial für lange und gleichzeitig unfruchtbare Diskussionen. Deshalb sollten wir dabei belassen, dass zumindest im Rahmen dieses Forums die Empfehlung zu dem Thema, die in [Tipp] Anfängerfehler == true / == false ausgeführte ist. Dass einige Firmen oder einzelne Programmierer das anders handhaben, finde ich wie meine beiden Vorredner befremdlich, aber deshalb steht es ja auch hier unter "Coding Styles Horror". 😃 Damit sollten wir es gut sein lassen.

herbivore

1.002 Beiträge seit 2007
vor 14 Jahren

Hallo,

neulich gesehen:

public void Abort()
{
    // ...
    
    throw new BadCodingException("Do not abort threads manually!");
}

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

U
1.688 Beiträge seit 2007
vor 14 Jahren

Hallo,

leider hatte ich keine Gelegenheit, mir diese Perle im Original zu kopieren. Also aus dem Gedächtnis etwas schematisch - hätte ich's nicht selbst gesehen, hätte ich es wohl nicht für möglich gehalten.


class c1 {
  ...
  void Send(c1 c, byte[] cmd, String strIP, String strPort) {

    c=this;
    int iPort=Convert.ToInt32(strPort);
    IPEndPoint ipe=new IPEndPoint(IPAddress.Parse(strIP), iPort);

    c.Sender.Sender.Send(cmd, cmd.Length, ipe);
  }
  ...
}

class Window1 : Window {
  c1 c;
  ...
  void Send(byte[] cmd) {
    ...
    String IP=c.Sender.Sender.IPSender.Address.ToString();
    String Port=c.Sender.Sender.IPSender.Port.ToString();
    ...
    c.Send(c, cmd, IP, Port);
    ...
  }
  ...
}

Zudem handelt es sich nicht mal um ein Einzelstück - in dem Code war/ist noch mehr davon. Begleitet von ganz vielen ToString() - unabhängig vom Datentyp, also auch bei Strings - sicher ist sicher.

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo,

?( ich kann nur sagen: Fantastisch.
Da muss man erst mal drauf kommen ⚠

Gruß, MarsStein --> amüsiert

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

U
1.688 Beiträge seit 2007
vor 14 Jahren

Hallo,

es gab noch eine Variante unter Einbeziehung von Klassenmembern. Natürlich in der Folge mit schwer zu findenden Bugs. Aber das war so abstrus, dass es hier zu viel Code gewesen wäre bzw. ich mir hätte sinngemäß neu ausdenken müssen.
Wenn's wenigstens "nur" ein Praktikant gewesen wäre, bestünde vielleicht noch Hoffnung...

W
558 Beiträge seit 2006
vor 13 Jahren
public bool Methode1(string parameter) { ... }

public void Methode2(string parameter)
{
  //...
  if (Methode1(parameter).ToString() == "False")
  {
     //...
  }
  //...
}
2.298 Beiträge seit 2010
vor 13 Jahren

Wer lässt sich denn sowas einfallen? 😁

Ich nutz zukünftig auch die ToString() Methode für sowas.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

U
1.578 Beiträge seit 2009
vor 13 Jahren

Wie geil 😁
Aber wichtig, erst ein ToLower() ausführen und gegen "false" vergleichen, ist sicherer 😁

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo CSL,

und bei der Prüfung am besten noch ein == true hinten dranhängen, um zu sehen, ob der Vergleich erfolgreich war.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

2.298 Beiträge seit 2010
vor 13 Jahren

Quatsch!

Folgendermaßen:


if(Convert.ToBoolean(Convert.ToBoolean(Methode1(parameter).ToString()) == false).ToString()) == true)

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

2.921 Beiträge seit 2005
vor 13 Jahren

edit: Code als CSharp-Blöcke markiert

bei uns seit neuestem:

CheckForIllegalCrossThreadCalls = false

(In jedem Form und Control)

und

if (b==true)

wenn ich das wirklich machen muss, werd ich ab jetzt überall (wenn b ein Wert sein sollte) auch schreiben:

if (b > 5 == true) 

usw.

So ein Quatsch.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Gelöschter Account
vor 13 Jahren

@webstarg:

schlag demjenigen doch mal vor, das er es doch lieber so machen soll 😄:D:D


if((Methode1(parameter).ToString().ToLowerInvariant().Contains("false")==true)

390 Beiträge seit 2008
vor 13 Jahren

FileStream fs = new FileStream("Eine wohl noch nicht erstellte Datei", FileMode.Append);
fs.Close();

StreamWriter sw = new StreamWriter("die selbe Datei", true, Encoding.ASCII);
sw.Write("...");
sw.Close();


Ohne Worte 😁

using Skill

47 Beiträge seit 2007
vor 13 Jahren

Das Teil hab ich in einem Perl Modul gefunden, dass ein Arbeitskollege geschrieben hat.

$myvar->{'events'} = $myvar->{'events'} if(!defined $myvar->{'events'});
390 Beiträge seit 2008
vor 13 Jahren

Versteh ich so wenig von Perl oder macht dieser Code überhaupt keinen Sinn?
Was hat denn if(...); für eine Wirkung? :S

using Skill

2.298 Beiträge seit 2010
vor 13 Jahren

Der Code macht doch an folgender Stelle schon keinen Sinn.


$myvar->{'events'} = $myvar->{'events'}

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

799 Beiträge seit 2007
vor 13 Jahren

Ich glaube, dass ist so wie bei Ruby wo du am Ende einer Anweisung when oder if anhängen kannst und die Zuweisung von der Bedingung abhängt. In dem Fall ist es doppelt toll, da die definierten Events an die definierten Events zugewiesen werden wenn sie definiert sind.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
Gelöschter Account
vor 13 Jahren

wenn sie definiert sind.

wenn sie nicht definiert sind oder? ich meine da ist doch ein ausrufezeichen?

also in (nicht compalierbaren) c# ausgedrückt:


if(!IsDefined(myvar.Events)
{
   myvar.Events = myvar.Events;
}
M
402 Beiträge seit 2005
vor 13 Jahren

Also manchmal platz mir fast der Kragen...

Ich hab grad einen "Bug-Fix" von einem unserer Entwickler bekommen.
Das Teil lief eigentlich ohne Probleme, nur bei einer Berechnung war ein Fehler...

und dann sowas und noch dazu 2 Mal...
(ist zwar PHP dennoch muss man sowas herzeigen) 😁

[php]

while($shopitemid=$shop_article_item->getShopArticleItem_ID()){
$shop_price = new DB_ShopPrice();
//.... tut noch ein paar Sachen...
}else{
$message = "...ErrorMessage...";
$pearlogger->log($message, PEAR_LOG_ERR);
}

[/php]