Laden...

Coding Styles Horror

Erstellt von Khalid vor 15 Jahren Letzter Beitrag vor 3 Jahren 365.155 Views
107 Beiträge seit 2011
vor 12 Jahren
        public static byte[] convertToUnsigned(int[] javaByte)
        {
            byte[] unsignedByte = new byte[javaByte.Length];

            for (int i = 0; i < javaByte.Length; i++)
            {
                unsignedByte[i] = (byte)(javaByte[i] & 255);
            }

            return unsignedByte;
        }

q.e.d.

D
24 Beiträge seit 2009
vor 12 Jahren

Moin zusammen,

diese kleine Zeile kommt aus Excel.

=G6+(WENN(E7<0;E7*-1;E7*-1)+F7)
114 Beiträge seit 2006
vor 12 Jahren

Gerade gefunden, ...ohne Worte

 
Try 
[...]
Catch ex As Exception
     'Geht halt nicht
End Try

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!

E
200 Beiträge seit 2006
vor 12 Jahren

Gerade in einem Prototypen auf Arbeit gefunden:

foreach (var dokument in SelectedDokuments)
{
    selectedDoc = dokument;
    break;
}

Schädel -> Wand

742 Beiträge seit 2005
vor 12 Jahren

Das ist ohne Kontext nicht soo verwunderlich. Wie würdest du es in einem .NET 2.0 Projekt (ohne Linq) lösen, wenn du z.B. von irgendeiner Methode ein IEnumerable zurückbekommst?

Hinweis von herbivore vor 12 Jahren

Betrachte die Frage bitte als rhetorisch. Bitte keine fachlichen Diskussionen in diesem Thread.

6.912 Beiträge seit 2009
vor 12 Jahren

Hallo zusammen,

ihr kennt sicher das Sprichtwort: "Warum einfach, wenns auch kompliziert geht."
Hier ein Beispiel dazu:


int i = nextParent.FindAll((x) =>
{
    if (dirList.Contains(x.FullName) | x.GetFiles().Length == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
).Count;

Die kürzere Variante wäre:


int i = nextParent.Count(x => dirList.Contains(x.FullName) || x.GetFiles().Length == 0);

Siehe auch [Tipp] Anfängerfehler == true / == false

Ich hoffe, dass der Produzent der längeren Variante das nicht falsch versteht. Aber das ist wie ein aufgelegter Elfmeter 😃

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!"

360 Beiträge seit 2005
vor 12 Jahren

Eben in einem Unit-Test entdeckt (der ansonsten durchaus brauchbare Sachen testet):


[TestMethod]
public void SomeTestMethod(){

    var some = TestCode();

    // TODO:
    // Verify other interesting stuff...

}

1.564 Beiträge seit 2007
vor 12 Jahren

Das ganze befindet sich in einer Basis-Klasse...


public void Initialize(params object[] environmentParameters)
{
   // get the environment, is the first dictionary
   foreach (Dictionary<string, string> item in environmentParameters)
   {
       m_Environment = item;
   }
}

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

C
252 Beiträge seit 2007
vor 12 Jahren

Grad imho so ziemlich das perverseste Property/Setter Teil ever entdeckt.


public bool HideContent
{
    set
    {
        centerControl.Visible = false;
    }
}

T
574 Beiträge seit 2008
vor 12 Jahren
bool error = true;

foreach (var item in currentBeratung.Beratungsinhalte)
{
    if (item.IsSelected)
    {
        error = false;
    }
}

if (error)
{
    errors = AddToErrors("Es muss zumindest ein Beratungsinhalt angegeben werden", errors);
}
else
{
    error = true;
}

foreach (var item in currentBeratung.Beratungsergebnisse)
{
    if (item.IsSelected)
    {
        error = false;
    }
}

if (error)
{
    errors = AddToErrors("Es muss zumindest ein Beratungsergebnis angegeben werden", errors);
}
I
19 Beiträge seit 2010
vor 12 Jahren

Wow 😃
Mehr fällt mir gerade nicht zu ein
Fehlerhafter und komplizierter gehts wohl beinahe nicht mehr 😃

M
85 Beiträge seit 2009
vor 12 Jahren

Mein Beitrag ist kein direkter Coding-Style-Horror, eher ein Kommunikationsproblem über das ich nun schon den ganzen Tag schmunzeln muss 🙂 Hoffe es ist dennoch ok wenn ich ihn hier poste.

Einer unserer Auftraggeber bekommt täglich per CSV-Datei eine Liste aller Bestellungen vom Vortag. Die gebuchten Optionen sind vom Auftraggeber vorgegebene alphanumerische Zeichenfolgen.

Bei einem Brandneuen Produkt sollten wir im Code ein großes i ausgeben.

Nun kam eine erboste Mail, wir würden da Schrott-Buchungen schicken, weils die Bezeichnung nicht gibt.

Das war tatsächlich unser Fehler, da wir statt einem großen i ein kleines L lieferten (sieht eben ziemlich ähnlich aus, um mal den Kollegen in Schutz zu nehmen g), aber prinzipiell war der Auftraggeber natürlich im Recht, keine Frage.

Aber damit nicht genug, die Erklärung vom Auftraggeber kam prompt: wir würden das Zeichen in der Schriftart "Wingdings" liefern.

Wingdings? In einer CSV-Textdatei? 😁

Das sind so Tage an denen ich abends ein Bierchen aufmache, Prost 😉

C
31 Beiträge seit 2009
vor 12 Jahren

Ohne Worte ...

			get
			{
				lock ( CriticalSection )
				{
					return 0;
				}
			}
1.346 Beiträge seit 2008
vor 12 Jahren

AppDomainSetup.ShadowCopyFiles

Typ: System.String
Der Zeichenfolgenwert "true" für aktiviertes Erstellen von Schattenkopien oder "false" für deaktiviertes Erstellen von Schattenkopien.

Also ich bin da ganz der selben Meinung. Immer dieser neumodische Kram. Wer braucht schon 'Booleans'.

Hinweis von herbivore vor 12 Jahren

Siehe auch die Antwort von Microsoft auf den entsprechenden Bug-Report AppDomainSetup.ShadowCopyFiles should be of the type bool instead of string.
Dank an JunkyXL für diesen Hinweis.

N
20 Beiträge seit 2010
vor 12 Jahren

Eben beim Refactoring eines Projektes gefunden:


lb_RatingCount.Text = WebResources.count + " " + string.Format( "({0})", result.RatingCount ) + " " + WebResources.ratings;

2.891 Beiträge seit 2004
vor 12 Jahren

Ratet mal, warum die Anwendung eines Kollegen seit heute (Tipp: Dezember) nicht mehr läuft:


calendarInfoErfassung.MaxDate = Convert.ToDateTime("01." + (activeMonth + 1).ToString() + "." + activeYear.ToString());

T
574 Beiträge seit 2008
vor 12 Jahren

der Fehler wird glaube ich relativ häufig gemacht, evtl. sollte mal einer die Convert Methode umschreiben 😉

P
1.090 Beiträge seit 2011
vor 12 Jahren

Ohne Worte,


Throw ex
 blnRueckgabe = False

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

309 Beiträge seit 2008
vor 12 Jahren

Man!

Ich hab mal wieder was in PHP gemacht und dort werde ich gezwungen (nicht von Konventionen, sondern vom Design der Sprache her) manchmal so was zu schreiben.


if (strpos($str, 'foo') !== false) // ARRRGH!!!! !== false
{
//
}

Das Problem ist die schwache Typisierung, strpos() liefert entweder die Position des String oder den boolschen Wert false zurück, wenn der String aber am Anfang (Position 0) liegt, wird im normalen Vergleich ( == / != ) 0 zu false ausgewertet, also muss ich mit dem boolschen Vergleichsoperator ( === / !== ) auf "ungleich falsch" prüfen!

Darum mag ich keine Sprachen mit schwacher Typisierung! 8o

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

B
198 Beiträge seit 2005
vor 12 Jahren

Hi,

Habe das gerade in unserem Code gefunden:

            switch (p_EventTrigger)
            {
                case QObjectEvent.OnCreate:
                case QObjectEvent.OnPrepareCommit:
                case QObjectEvent.OnCommit:
                    {
                        if (property != null)
                            args = new QObjectEventArgs(p_EventTrigger, property);
                        else
                            args = new QObjectEventArgs(p_EventTrigger);

                        break;
                    }
                case QObjectEvent.OnOpen:
                case QObjectEvent.OnOk:
                case QObjectEvent.OnCancel:
                case QObjectEvent.OnPropertyChange:
                    {
                        args = new QGuiEventArgs(p_EventTrigger);
                        break;
                    }

            }

Ich bin gerade am überlegen ob ich das umschreiben sollte oder nicht... 😉

C
252 Beiträge seit 2007
vor 12 Jahren

Hab heute in unserem Code vermehrt folgendes Konstrukt vorgefunden:


title = title.TrimStart(' ').TrimEnd(' ');

U
282 Beiträge seit 2008
vor 12 Jahren

Ich glaube, das geht kürzer (single threaded Anwendung mit .NET 3.5);


int _value;

public int Value {
    get 
    {
        lock(this)
        {
            try
            {
                return _value;
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
    }
}

B
1 Beiträge seit 2007
vor 12 Jahren
((this.CurrentPlayer == this.Player1) ? this.Player2 : this.Player1).PlayerBalltype = (p.PlayerBalltype == BallType.Full) ? BallType.Half : BallType.Full;
1.044 Beiträge seit 2008
vor 12 Jahren

Hallo zusammen,

kürzlich war mir folgendes Konstrukt begegnet:

int val1 = 10;
int val2 = 20;

int i = val1 = val2 = 0;

Es ist zwar kein Coding-Style-Horror, aber doch auf den ersten Blick sehr verwirrend. Seid mal ehrlich - wer von euch kann mir auf Anhieb sagen was bei rauskommt?

zero_x

Hinweis von winSharp93 vor 12 Jahren

Bitte die Frage in diesem Thread als rhetorisch ansehen!

M
78 Beiträge seit 2007
vor 12 Jahren

Studienkollege wollte bei Projekt auf Nummer sicher gehen. Bei bool weiß man ja nie 😁

bool isAktiv = //....
if (isAktiv)
{
    //Mach was
}
else if (!isAktiv)
{
    //Mach was anderes
}
C
252 Beiträge seit 2007
vor 12 Jahren

Das nenn ich mal nen WTF-Konstrukt:


    void marker(string WORT, RichTextBox textBoxName, Color farbe)
    {
      int index = 0;
      found = false;
      do
      {
        try { index = textBoxName.Text.IndexOf(WORT, index); }
        catch { }
        if (index >= 0)
        {
          textBoxName.SelectionStart = index;
          textBoxName.SelectionLength = WORT.Length;
          textBoxName.SelectionColor = farbe;
          index += WORT.Length;
        }
        else break;

      }
      while (found = true);
    }

C
258 Beiträge seit 2011
vor 11 Jahren

        private string GetErrorText(string cStr2, string cStr3)
        {
            int iWert;
            string cStr1;
            string cStr4;
            string cStr5;
            string cStr6;
            string cStr7;
            string cStr8;

Ein traum von lesbarkeit sogar die Parameter haben einen Sprechenden Namen ^^

und das file mit ca 50 000 Zeilen find ich auch stark

C
48 Beiträge seit 2011
vor 11 Jahren

Hallo,

Ist zwar JavaScript, aber trotzdem eine interessante Abfrage (im Original sogar ohne jedes Leerzeichen):


if (b = (b = b == null || b === "" ? c : typeof b == "string" ? f(b) : typeof b == "number" ? isNaN(b) ? c : e(b) : new Date(b.getTime())) && b.toString() == "Invalid Date" ? c : b) {
                                                                                     b.setHours(0);
                                                                                     b.setMinutes(0);
                                                                                     b.setSeconds(0);
                                                                                     b.setMilliseconds(0)
                                                                                 }

(aus dem jquery-ui script)

Mit Zeilenumbrüchen ist das Script in der Minimalversion ganze 7879 Zeilen lang.

In theory, there is no difference between theory and practice. But, in practice, there is.

The nice thing about the Java API is that if you don't like it, just wait two minutes — it will change. Doug Lyon

16.864 Beiträge seit 2008
vor 11 Jahren

Könntest Du mir sagen, welches File das genau sein soll von jQuery UI? Die 'b' sprechen für ein minimied-File aber ich find das nirgens. Und dass hier mehrere Files zu einem geformt werden und daraus fast 8000 Zeilen werden ist absolut normal, gewollt und Performance-fördernd. Also kein Horror-Style.

C
48 Beiträge seit 2011
vor 11 Jahren

Das ist ein Script namens jquery-ui-1.8.16.custom.min.js, ich habe es allerdings nicht selbst zusammengestellt, sondern in der Form auf einer Website eingebunden gefunden.
Ich meinte mit Horror auch eher nicht die 8000 Zeilen, sondern die Form und Lesbarkeit der Bedingung in der if-Abfrage.

In theory, there is no difference between theory and practice. But, in practice, there is.

The nice thing about the Java API is that if you don't like it, just wait two minutes — it will change. Doug Lyon

M
120 Beiträge seit 2009
vor 11 Jahren

Das ist aber wie Abt schon schrieb normal... die .min.js werden automatisiert erstellt und sind für die traffic-sparende (u.a. Gründe) Endbenutzerauslieferung gedacht.

C
40 Beiträge seit 2011
vor 11 Jahren

Habe da gerade beim Spielen mit den Safari Entwicklertools was im Source der Spiegel Online Seite gefunden (Javascript):


SpOnENV_MapShowCategories = ('true' == 'true');
SpOnENV_MapShowAdvert = ('false' == 'true');

Wieso hier nicht direkt ein boolscher Wert zugewiesen wird find ich sehr strange.

Quelle: http://www.spiegel.de/layout/js/http/javascript-V3-13-8.js

T
574 Beiträge seit 2008
vor 11 Jahren
Select Case kunde.Geschlecht
    Case True 'Männer 2%
        Call someOtherMethod(with1ForMen)
    Case False 'Frauen 2%
        Call someOtherMethod(with2ForWomen)
End Select

Was der Programmierer wohl für ein Geschlecht hatte um "Männer" als das "wahre" Geschlecht zu deklarieren ... 😉

D
615 Beiträge seit 2009
vor 11 Jahren

@tkrasinger

Eigentlich müsste es doch so aussehen:


Select Case kunde.Geschlecht
    Case True 'Männer 2%
        Call someOtherMethod(with1ForMen)
    Case False 'Frauen 2%
        Call someOtherMethod(with2ForWomen)
    Case Null 'Zwitter 2%
        Call someOtherMethod(with3ForZwitter)
End Select

😉

Beste Grüsse

Diräkt

(sorry konnte ich mir nicht verkneifen 😉)

Hinweis von herbivore vor 11 Jahren

Es sei nochmal auf die besondere Regel in diesem Thread erinnert:
"Bitte lasst [...] den Horror unkommentiert."

W
4 Beiträge seit 2012
vor 11 Jahren

Methodensignatur (soweit ok)

public static Array EvaluateExpression(string a, string b)
{...}

Methodenaufruf ( 🙄 )


string outputCalcExpression = EvaluateExpression(a, b).GetValue(0).ToString();
string outputIsEvaluated =    EvaluateExpression(a, b).GetValue(2).ToString();

und ja, statt mit boolean wird mit string gearbeitet (outputIsEvaluated)...

2.298 Beiträge seit 2010
vor 11 Jahren

Gerade in einer Anwendung gefunden, den ich refaktorisieren soll:


private bool HandleErrors(ErrorObject[] errors)
{
      if(errors.Length == 0)
            return true;

      foreach(ErrorObject error in errors)
      {
           // Event werfen für jeden Fehler
           throw new ApplicationException(error.ErrorText);
      }

      this._lastError = errors[0].ErrorText;

      return false;
}

Weis nicht was ich dazu sagen soll.

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

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

P
40 Beiträge seit 2011
vor 11 Jahren

Heute in der Arbeit gesehen


....
if (args.Length > 0)
{
    if (pointer)
    {
        ..... some Code ....
    }
    else 
    {
        //pointer is false
        //Not Pointer Bereich
        ..... some Code ....
    }
}
else
{
    //args.Length = 0
    //Call without Parameters
    .... some Code ....
}
....

Normal beschwere ich mich ja immer in der Arbeit, dass nicht immer alles kommentiert/dokumentiert wird. Aber solche Kommentare kann man sich auch sparen ...

309 Beiträge seit 2008
vor 11 Jahren

Ich hab hier gerade eine .NET-API, die scheinbar eine 1:1 Umsetzung einer C-API ist, sprich die ganzen Features von .NET wird komplett gepfiffen.

Los gehts das die ganze API komplett auf Objektorientierung verzichtet, alle Interfaces sind als Structs definiert sind (es gibt in der gesamten API keine einzige Klasse !!!), statt Exceptions gibts wie im guten alten C Errorcodes als Returnwerte in Methoden (Der Knüller ist ja das intern Exceptions fliegen, die aber alle gefangen werden und als Errorcode zurück gegeben werden), Generika und Namespaces sind wohl Teufelswerk.

Allein der Samplecode ist schon gruslig.

Sinngemäß:


int error = 0;
Bar bar;
int  i;

error = foo(out bar, out i);

// Wie in guten alten Zeiten ....
if (error != 0)
{
     // Selbst Api.ErrorCodes ist ein struct!
     if (error == Api.ErrorCodes.Fatal)
     {
          Console.WriteLine("Panik");
          return;
     }
}

Die API ist in C++/CLI geschrieben, was meinen Verdacht das das ein "Wir brauchen unbedingt und ganz schnell eine .net API" Schnellschuss ist. Offiziell sind es aber "Performancegründe". 8o

So verwende ich lieber gleich eine native Dll, der Code der dabei herauskommt sieht fast genauso aus und da weiß ich wenigstens warum! :evil:

Wenn ich mehr Zeit hätte würde ich am liebsten die ganze API neu implementieren!

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

309 Beiträge seit 2008
vor 11 Jahren

Ich muss noch schnell eine Perle aus dem Samplecode der o.g. API loswerden:

class MySortedDictionary :
   System.Collections.Generic.SortedDictionary<long, Object>
{
   public Object Get(long key)
   {
      try { return this[key]; }
      catch (System.Collections.Generic.KeyNotFoundException) { }
      return null;
   }

   public void Set(long key, Object val)
   {
      this[key] = val;
   }
};

8o 8o 8o

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

N
54 Beiträge seit 2011
vor 11 Jahren

weil ichs kann^^

if (x3 != 5)
                {
                    while (z3 == Convert.ToInt32(bahn3[merk].Substring(0, 1)))
                    {
                        //wenn keine 0er da sind muss man schaun ob die bahn/breite vorhanden ist, dann auslassen
                        //sonst verschiebt sich einiges, eventl auch kennzahl 999999999
                        //das mit den 0ern eventl einfügen und dann wenn gewsumlist3 && die anderen == 0 regieren, geht vll auch wenn alle 999999999
                        oExcelApplication.Cells[üh, 1] = Math.Round((((gewsumList3[laufvar] / tage3) * 5) / 1000), 1); //wochenverbrauch im monat in tonnen
                        oExcelApplication.Cells[üh, 2] = Math.Round((((gewsumList2[laufvar] / tage2) * 5) / 1000), 1);
                        oExcelApplication.Cells[üh, 3] = Math.Round((((gewsumList1[laufvar] / tage1) * 5) / 1000), 1);
                        oExcelApplication.Cells[üh, 4] = Math.Round((((gewsumList[laufvar] / (tage0 - 1)) * 5) / 1000), 1);
                        oExcelApplication.Cells[üh, 7] = bahn3[merk].Substring(1);
                        oExcelApplication.Cells[üh, 8] = Math.Round(rolgewsum[laufvar] / 1000, 1);
                        merk++; üh++; laufvar++; //bahn3[merk].Remove(0, 1);
                        if (merk == (bahn3.Count - 1))
                        {
                            break;
                        }
                    }
                }
else irgendwas

hab ich selber vor einem Jahr geschrieben und heute wieder angeguckt xD

mfg

888 Beiträge seit 2007
vor 10 Jahren

    public enum TriStateBoolean : int
    {

        /// <summary>
        /// nicht gesetzt
        /// </summary>
        [Description ( "nicht gesetzt" )]
        NotSet = 0,

        /// <summary>
        /// falsch
        /// </summary>
        [Description ( "falsch" )]
        False = 1,

        /// <summary>
        /// wahr
        /// </summary>
        [Description ( "wahr" )]
        True = 2

    }

Auf so einem Unsinn muss ich aufsetzen...

H
523 Beiträge seit 2008
vor 10 Jahren

Ich habe heute die schöne Aufgabe Fehler in einem uralten Delphi 5-Programm zu beheben X(

Feldwerte ist ein Array welches Werte aus einer Zeile einer Textdatei enthält.


  if Token(Feldwerte,59,  '¥' ) = '' then sDat1 := 'NULL' else sDat1 := Token(Feldwerte,59,  '¥' );
  if Token(Feldwerte,69,  '¥' ) = '' then sDat2 := 'NULL' else sDat2 := Token(Feldwerte,69,  '¥' );
  if Token(Feldwerte,70,  '¥' ) = '' then sDat3 := 'NULL' else sDat3 := Token(Feldwerte,70,  '¥' );
  if Token(Feldwerte,71,  '¥' ) = '' then sDat4 := 'NULL' else sDat4 := Token(Feldwerte,71,  '¥' );
  if Token(Feldwerte,73,  '¥' ) = '' then sDat5 := 'NULL' else sDat5 := Token(Feldwerte,73,  '¥' );
  if Token(Feldwerte,79,  '¥' ) = '' then sDat6 := 'NULL' else sDat6 := Token(Feldwerte,79,  '¥' );
  if Token(Feldwerte,70,  '¥' ) = '' then sDat7 := 'NULL' else sDat7 := Token(Feldwerte,70,  '¥' );
  if Token(Feldwerte,71,  '¥' ) = '' then sDat8 := 'NULL' else sDat8 := Token(Feldwerte,71,  '¥' );
  if Token(Feldwerte,84,  '¥' ) = '' then sDat9 := 'NULL' else sDat9 := Token(Feldwerte,84,  '¥' );
  if Token(Feldwerte,86,  '¥' ) = '' then sDat10 := 'NULL' else sDat10 := Token(Feldwerte,86,  '¥' );


        sSql   :=  format(ins_kunde_Client, [
                                           Token(Feldwerte,1,  '¥' ),
                                             Token(Feldwerte,2,  '¥' ),
                                             Token(Feldwerte,3,  '¥' ),
                                             Token(Feldwerte,4,  '¥' ),
                                             Token(Feldwerte,5,  '¥' ),
                                             Token(Feldwerte,6,  '¥' ),
                                             Token(Feldwerte,7,  '¥' ),
                                             Token(Feldwerte,8,  '¥' ),
                                             Token(Feldwerte,9,  '¥' ),
                                             Token(Feldwerte,10,  '¥' ),
                                             Token(Feldwerte,11,  '¥' ),
                                             Token(Feldwerte,12,  '¥' ),
                                             Token(Feldwerte,13,  '¥' ),
                                             Token(Feldwerte,14,  '¥' ),
                                             Token(Feldwerte,15,  '¥' ),
                                             Token(Feldwerte,16,  '¥' ),
                                             Token(Feldwerte,17,  '¥' ),
                                             Token(Feldwerte,18,  '¥' ),
                                             Token(Feldwerte,19,  '¥' ),
                                             Token(Feldwerte,20,  '¥' ),
                                             Token(Feldwerte,21,  '¥' ),
                                             Token(Feldwerte,22,  '¥' ),
                                             Token(Feldwerte,23,  '¥' ),
                                             Token(Feldwerte,24,  '¥' ),
                                             Token(Feldwerte,25,  '¥' ),
                                             Token(Feldwerte,26,  '¥' ),
                                             Token(Feldwerte,27,  '¥' ),
                                             Token(Feldwerte,28,  '¥' ),
                                             Token(Feldwerte,29,  '¥' ),
                                             Token(Feldwerte,30,  '¥' ),
                                             Token(Feldwerte,31,  '¥' ),
                                             Token(Feldwerte,32,  '¥' ),
                                             Token(Feldwerte,33,  '¥' ),
                                             Token(Feldwerte,34,  '¥' ),
                                             Token(Feldwerte,35,  '¥' ),
                                             Token(Feldwerte,36,  '¥' ),
                                             Token(Feldwerte,37,  '¥' ),
                                             Token(Feldwerte,38,  '¥' ),
                                             Token(Feldwerte,39,  '¥' ),
                                             Token(Feldwerte,40,  '¥' ),
                                             Token(Feldwerte,41,  '¥' ),
                                             Token(Feldwerte,42,  '¥' ),
                                             Token(Feldwerte,43,  '¥' ),
                                             Token(Feldwerte,44,  '¥' ),
                                             Token(Feldwerte,45,  '¥' ),
                                             Token(Feldwerte,46,  '¥' ),
                                             Token(Feldwerte,47,  '¥' ),
                                             Token(Feldwerte,48,  '¥' ),
                                             Token(Feldwerte,49,  '¥' ),
                                             Token(Feldwerte,50,  '¥' ),
                                             Token(Feldwerte,51,  '¥' ),
                                             Token(Feldwerte,52,  '¥' ),
                                             Token(Feldwerte,53,  '¥' ),
                                             Token(Feldwerte,54,  '¥' ),
                                             Token(Feldwerte,55,  '¥' ),
                                             Token(Feldwerte,56,  '¥' ),
                                             Token(Feldwerte,57,  '¥' ),
                                             Token(Feldwerte,58,  '¥' ),
                                             sDat1,
                                             Token(Feldwerte,60,  '¥' ),
                                             Token(Feldwerte,61,  '¥' ),
                                             Token(Feldwerte,62,  '¥' ),
                                             Token(Feldwerte,63,  '¥' ),
                                             Token(Feldwerte,64,  '¥' ),
                                             Token(Feldwerte,65,  '¥' ),
                                             Token(Feldwerte,66,  '¥' ),
                                             Token(Feldwerte,67,  '¥' ),
                                             Token(Feldwerte,68,  '¥' ),
                                             sDat3,
                                             sDat2,
                                             sDat7,
                                             sDat8,
                                             Token(Feldwerte,72,  '¥' ),
                                             sDat5,
                                             Token(Feldwerte,74,  '¥' ),
                                             Token(Feldwerte,75,  '¥' ),
                                             Token(Feldwerte,76,  '¥' ),
                                             Token(Feldwerte,77,  '¥' ),
                                             Token(Feldwerte,78,  '¥' ),
                                             sDat6,
                                             Token(Feldwerte,80,  '¥' ),
                                             Token(Feldwerte,81,  '¥' ),
                                             Token(Feldwerte,82,  '¥' ),
                                             Token(Feldwerte,83,  '¥' ),
                                             sDat9,
                                             Token(Feldwerte,85,  '¥' ),
                                             sDat10,
                                             Token(Feldwerte,87,  '¥' ),
                                             Token(Feldwerte,88,  '¥' )]);

Und wie sollte es anders sein, passen einige Werte überhaupt nicht, bzw. stehen an der falschen Stelle. Von Klassen und Objekten hatte der Programmierer wohl noch nie was gehört...

2.760 Beiträge seit 2006
vor 10 Jahren

Ein Bild sagt mehr als tausend Worte.
Und nein, es ist leider nicht die einzige Klasse die so aussieht. Zum Glück hat die Klasse nur 230 Methoden sonst würde man sich ja gar nicht mehr zurecht finden 😃

2.298 Beiträge seit 2010
vor 10 Jahren

Hallo,

folgendes habe ich gerade gefunden:


try
{
     try
     {
          // Code entfernt da nicht relevant
     }
     catch(Exception e)
     {
         throw;
     }
}
catch(Exception exc)
{
      this.Log(exc.Message, exc);
}

Ist ja nicht so, das man es gleich loggen könnte statt die Exception nocheinmal zu werfen.

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

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

2.298 Beiträge seit 2010
vor 10 Jahren

Jetzt musste ich gerade schmunzeln. Ich bin gerade an der Refaktorisierung einer Anwendung und habe folgendes entdeckt.


// say some nice
this.OnErrorOccured(@"Bei der Suche sind Fehler aufgetreten!");

Zumindest find ja schön, das eine nette Meldung geplant war. 👍 So sieht das also aus, wenn man alles kommentiert und auch das noch falsch macht.

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

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

M
171 Beiträge seit 2012
vor 10 Jahren

Was haltet ihr eigentlich von


if(false == xyz)
{
 //...
}

?

W
113 Beiträge seit 2006
vor 10 Jahren

Da hat wohl jemand wenig Vertrauen in die if-Abfrage:


if (oldItems != null)
{
	if (oldItems != null)
	{
		...
	}
	...
}

Gerade im Code vom WPFToolkit gefunden.
😁

M
120 Beiträge seit 2009
vor 10 Jahren

Oder ein Überbleibsel wo die äußere Abfrage mal eine zusätzliche Prüfung hatte 😉

Habt ihr mal alten Code von euch angeguckt? Privaten oder beruflichen. Mal davon abgesehen, dass bei Umstellung von .NET 2.0 auf .NET 4.0 (4.5 ist ja nicht wenn man Windows XP nicht ignorieren darf) schon viel Code anders/kürzer/performanter machbar wäre... echt schon erschreckend was einem da so begegnet.

Hab das gerade hinter mehr... ich mein immerhin kann ich ihn noch nachvollziehen, aber man merkt schon wie das private Projekt gewachsen ist. Ich musste mich echt stark zurückhalten, um nicht beim "Nurmalebenkurz etwas einbauen" einen Großteil des Codes umzuschreiben...

G
141 Beiträge seit 2011
vor 10 Jahren

Puuuuuuhhh......,

Da hat aber jemand was nicht so ganz verstanden.


if (Directory.Exists(FolderPath))
{
    return true;
}
else if (!Directory.Exists(FolderPath))
{
    return false;
}

P
157 Beiträge seit 2014
vor 10 Jahren

Hm ich finds i-wie uncool sich über Stilblüten lustig zu machen, wär doch sinnvoller sich mit den Entwicklern zusammen zu setzen und ein wenig Pair-Programming zu betreiben, die Qualität eurer Arbeit war anfangs sicherlich auch nicht viel besser...ausserdem:

habt ihr schon mal 9000 Loc Xaml aufgeteilt in 2 Dateien + 30k loc c# codebehind super-antipattern refactored ... das ist nicht lustig...das ist frustrierend...ich hatte mal das vergnügen den code in einer recht großen Firma mit grünem Schriftzug, eines vorruheständlerischen c++ entwicklers zu "überarbeiten"...hat mich ein paar Monate meines Lebens gekostet...

also wenn ihr das nächste mal ein paar Zeilen Code seht die euch nicht gefallen...jammert nicht rum 😛 😄

Hinweis von herbivore vor 10 Jahren

Da hast du den Sinn des Threads leider gründlich missverstanden. Daher möchte ich den Hinweis wiederholen, der ganz am Anfang des Threads steht:

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

Das dies ernst genommen wird, zeigt sich unter anderem daran, dass es immer wieder Beiträge gibt, in denen Personen ihren eigenen (früheren) Code posten. Und denen kann man kaum unterstellen, dass sie sich selbst anprangern wollen.

Wenn's zum weinen nicht reicht, lach drüber!