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
JunkyXL
myCSharp.de - Experte

Avatar #avatar-3234.gif


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

beantworten | zitieren | melden

Zitat
Er (Mitarbeiter): Die Operation [...] läuft nun wieder synchron.

Chef: Ab X Operationen macht eine ProgressBar Sinn...

Ich: Ja, wird aber so nicht gehen. Man wird keinen Fortschritt sehen.

[Stille, verwirrte Blicke]

Er: Warum nicht?

Ich: Die Operationen laufen ja nun wieder im GUI Thread, wie solll das denn funktionieren?

Er: Wozu gibts denn Application.DoEvents() ?

Ich: -_________-

Das nenne ich horror...
Das Beste ist, dass diese Antwort keine Reaktion bei meinem Chef hervorgerufen hat.
private Nachricht | Beiträge des Benutzers
Fabian
myCSharp.de - Member

Avatar #avatar-1590.jpg


Dabei seit:
Beiträge: 1.985
Herkunft: Dortmund

beantworten | zitieren | melden

Hallo zusammen,
Zitat von JunkyXL
Das nenne ich horror...
Das Beste ist, dass diese Antwort keine Reaktion bei meinem Chef hervorgerufen hat.
sehr schön :). Ich musste schmunzeln. Hätte mich eher gewundert, wenn diese Antwort eine Reaktion bei Deinem Chef hervorgerufen hätte.


Gruß,
Fabian
"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de
private Nachricht | Beiträge des Benutzers
tkrasinger
myCSharp.de - Member



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

beantworten | zitieren | melden

// Is there a selected item?
if (!string.IsNullOrEmpty(item))
{
    // Show the edit elements
    ccEdit.Visibility = Visibility.Visible;
}
else
{
    // Hide the edit elements
    ccEdit.Visibility = Visibility.Collapsed;
}


Kein Kommentar (ROFL)
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Also für mich macht das durchaus Sinn?

Je nachdem um was für eine Methode (evtl. EventHandler Methode) handelt, ist das sogar wirklich Sinnvoll. - Beispiel:

Ist in einem Buttn ClickHandler, der Button soll dafür sorgen, dass die Elemente angezeigt werden. Ist nichts in der Liste ausgewählt und es wird etwas angezeigt muss das Zwangsläufig ausgeblendet werden. - Und umgekehrt.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Femaref
myCSharp.de - Member



Dabei seit:
Beiträge: 240

beantworten | zitieren | melden

Zitat von inflames2k
Also für mich macht das durchaus Sinn?


ccEdit.Visibility = !string.IsNullOrEmpty(item) ? Visibility.Visible : Visibility.Collapsed;
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Femaref am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Zitat von Femaref


ccEdit.Visibility = !string.IsNullOrEmpty(item) ? Visibility.Visible : Visibility.Collapsed;

Soll ich ehrlich sein? Allein Aufgrund der Lesbarkeit würde ich die Langform bevorzugen.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Hallo,

Sehe ich ähnlich, ich würde es auch nicht so kompakt schreiben. Das hier ist z.B. mMn lesbarer und kommt ohne Kommentare aus:


public void UpdateEditItemsVisibility()
{
  if (IsAnyItemSelected)
  {
    ShowEditElements();
  }
  else
  {
    HideEditElements();
  }
}

private bool IsAnyItemSelected
{
  get { return !string.IsNullOrEmpty(item); }
}

private void ShowEditElements()
{
  ccEdit.Visibility = Visibility.Visible;
}

private void HideEditElements()
{
  ccEdit.Visibility = Visibility.Collapsed;
}

Grüße,
Andre
private Nachricht | Beiträge des Benutzers
aequitas
myCSharp.de - Member

Avatar #avatar-3079.png


Dabei seit:
Beiträge: 458
Herkunft: Unterfranken

beantworten | zitieren | melden

Ich wuerde eher


public void UpdateEditItemsVisibility()
{
  this.SetEditElementsVisibility(IsAnyItemSelected);
}

private bool IsAnyItemSelected
{
  get { return !string.IsNullOrEmpty(item); }
}

private void SetEditElementsVisibility(bool visibility)
{
  this.ccEdit.Visibility = visibility;
}

bevorzugen, ist aber geschmackssache.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von aequitas am .
be the hammer, not the nail!
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (23.07.2010 - 15:28)

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

tkrasinger
myCSharp.de - Member



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

beantworten | zitieren | melden

// Constructor
public ThumbnailImageGenerator()
{
    //nothing
}

Code vom selben (ehemaligen) Mitarbeiter wie letzter Auszug
private Nachricht | Beiträge des Benutzers
edsplash
myCSharp.de - Member

Avatar #avatar-3111.jpg


Dabei seit:
Beiträge: 390

beantworten | zitieren | melden

Was ist an einem leeren Konstruktor so horrormässig?
using Skill
private Nachricht | Beiträge des Benutzers
userid14268
myCSharp.de - Member



Dabei seit:
Beiträge: 1.578

beantworten | zitieren | melden

Wenn man ein Spezifizierten ctor UND einen leeren anbieten will muss man den leeren auch angeben da durch den Spezifizierten der Default ctor überschrieben wird.

Das ist alles andere außer Coding Style Horror.
private Nachricht | Beiträge des Benutzers
tkrasinger
myCSharp.de - Member



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

beantworten | zitieren | melden

Zitat von edsplash
Was ist an einem leeren Konstruktor so horrormässig?

nichts, es geht ums "nothing"
private Nachricht | Beiträge des Benutzers
fielding
myCSharp.de - Member



Dabei seit:
Beiträge: 60

beantworten | zitieren | melden

Also der //Constructor Kommentar ist wirklich Horror, ein //Nothing allerdings lesbarer als {} oder {;}. Allerdings spricht auch nix gegen // Explicit default constructor :)
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von fielding am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Ich find beides keinen Horror... Lieber schreib ich da Constructor hin, als dass einer kommt der keine Ahnung von C# hat und meint "Unnötige Methode weg damit".
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (02.08.2010 - 08:46)

Ich muss mich leider nochmal wiederholen und um Beachtung bitten: Vor lauter Kommentaren zu den eigentlichen Coding Styles Horrors sieht man dieselben kaum noch. Das Thema des Threads ist auch nicht, zu jedem Horror eine bessere Lösung zu finden (das ist ohne Weiteres immer möglich) oder ellenlang darüber zu diskutieren, welchen Horrorgrad der Code auf einer Skala von 0 bis 100 hat, sondern einfach andere besonderes grausamen Konstruktionen teilhaben zu lassen.

VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Hallo,

Gerade hier im Forum gesehen:


var res = (from b in begrgr
        where
            (from bb1 in begrgbez
            where
                !
                (from bb2 in begrgbez
                    select new
                    {
                        bb2.Id_BegrGr2
                    }).Contains(new BegrGBez { Id_BegrGr1 = bb1.Id_BegrGr1 })
            group bb1 by new
            {
                bb1.Id_BegrGr1
            } into g
            select new
            {
                Id_BegrGr1 = (System.Int16?)g.Key.Id_BegrGr1
            }).Contains(new { b.Id_BegrGr })
        select new
        {
            b.Id_BegrGr
        }).Count();

Quelle: Linq Ausdruck: Syntaxfehler (type arguments cannot be inferred/cannot convert AnonymousType#1)

Die Komplexität des Ausdrucks und die Namensgebung sind "atemberaubend".

Grüße,
Andre
private Nachricht | Beiträge des Benutzers
S_teffi
myCSharp.de - Member



Dabei seit:
Beiträge: 42

beantworten | zitieren | melden

Wo wir grad bei aussagekräftigen Variablennamen sind:

	//screenshot. 
		const char *screenPath = (const char*)aDataBaseFile;
		char* tmp3;
		size_t laenge;
		//delete[] aDataBaseFile;
		if (scsh!=0){	
			std::string qwer;
			qwer.append(screenPath);
			qwer.append("\\");
			qwer.append("screenShot");
			qwer.append(".bmp");
			laenge = qwer.length();
			tmp3 = new char [ laenge + 1 ];
			strcpy( tmp3, qwer.c_str() );
			SaveScreen(tmp3,aLeft,aTop,width,height);
		}


	//######################String-Operationen für den Aufruf von ImageSearch######################
	//findet die Länge des Pfades directoryLetters heraus, Voraussetzung ist, dass er auf "\0" endet. 
		char jkl;
		int asdf = 0;
		do{
			jkl = (char)directoryLetters[asdf];
			asdf++;
		}
		while (jkl!='\0');
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Da hab ich doch auch mal was interessantes gefunden...

Ist eine Methode die eine Verbindung via Remoting von Client Seite aus beenden soll:


public void Disconnect()
		{
			try
			{
				if (this._interface != null)
				{
					// ??
				}
			}
			finally
			{
				this._connection = State.NotConnected;
			}
		}
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
chriscolm
myCSharp.de - Member



Dabei seit:
Beiträge: 112

beantworten | zitieren | melden

Moin, bin leider erst heute über diesen unterhaltsamen Thread gestolpert.
Mir ist vor einiger Zeit folgendes Konstrukt untergekommen:


switch(Wert) {
case "Wert_A","Wert_B" :
    if(Wert.Equals("Wert_A") {
    ...
    }
    if(Wert.Equals("Wert_B"){
     ...
    }
....
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Und mir begegnete heute C++ Code, der ein XML-Dokument parsen sollte und dessen C# Äquivalent in etwa so aussah (Namen angepasst):


XmlNodeList nodes = document.SelectNodes("Items//Item");
for (int i = 0; i < nodes.Count; i++)
{
    string text = nodes[i].InnerText;

    switch (i)
    {
        case 0: //Titel
            person.Title = text;
            break;
        case 1: //Name
            person.Name = text;
            break;
        case 2: //Geburtsdatum
            person.Birthday = Convert.ToDateTime(text);
            break;
        //und noch 3 weitere davon
        default:
            break;
    }
}

Und sehr in der Nähe auch in etwa dieses "Prachtstück" (im originalen waren es sogar zwei Flags, die so "ausgewertet" wurden):


//...
string flag = "";
DoFoo(/*ein paar weitere Parameter*/, ref flag);
if (flag.CompareTo("1") == 0)
   wert = "0";

//...
void DoFoo(/*...*/, ref flag)
{
    string s = //...
    flag = Convert.ToInt32(!Convert.ToBoolean(s)).ToString();
    //...
}
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1.002

beantworten | zitieren | melden

Hallo zusammen,

auch eine Perle:

if (Session["sessionid"] == null)
{
    Response.Redirect("Login.aspx");
}
else if (Session["value"] == null)
{
    Response.Redirect("Login.aspx");
}

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Hallo,

uns ist letztens Code in dieser Form übern Weg gelaufen:


...
ObjectABC.XYZ = null;
if(ObjectABC.XYZ == null) {
  throw new FooException(...);
}
...

Trotz dieses Code wurde die FooException nicht geworfen was einfach daran lag, dass XYZ nen recht komplexes Property ist welches beim null setzen bestimmte Aktionen ausführt und wirklich nur im Fehlerfall null im get zurückgibt. Hier wollte jemand wohl auf eine, als solche erkennbare, Funktion verzichten und hat ein Property dazu benutzt - set als Übergabeparameter und get als Rückgabewert ;)
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
chavez
myCSharp.de - Member



Dabei seit:
Beiträge: 252
Herkunft: Österreich

Beste Source Code Kommentare

beantworten | zitieren | melden

Moderationshinweis von herbivore (17.09.2010 - 09:35)

Beitrag hier eingefügt


Ich bin zufällig grad über folgende Seite gestolpert: Beste Kommentare

Evtl sind euch ja auch schon solche Perlen untergekommen.
Da sind schon einige Klassiker dabei:


Exception up = new Exception("Something is really wrong.");
throw up;  //ha ha


/* This is O(scary), but seems quick enough in practice. */


#define TRUE FALSE //Happy debugging suckers


// I don't know why I need this, but it stops the people being upside-down
x = -x;


ICantBelieveImUsingAGoto:


// If you're reading this, that means you have been put in charge of my previous project.
// I am so, so sorry for you. God speed.
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

Ich habe grade folgendes in einem opensourceprojekt gefunden:
(sinngemäß wiedergegeben)

 switch(messageId)
{
   case bla:
       //code
       break;
   case blub:
       //code
       break;

            #define PARSEMESSAGES 1
            #include "capture.h"
            #include "ctf.h"
            #undef PARSEMESSAGES

    case foo:
       //code
       break;
    default:
        handleError();
        return;
}

Und innerhalb dieser header ist dann folgendes:

#ifndef PARSEMESSAGES
foo()
{
//Code
}

struct bar
{
//Code
}

....
#else
    case meldung1:
//Code
        break;
    case meldung2:
//Code
        break;
#endif

Sehr kreativ, aber wer soll da durchstiegen...
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Floste am .
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

gerade hier im Forum gesehen ;-)



 string[] aufgeteilt1 = teil1.Split(new Char[] { '+' });
         



           if (aufgeteilt1[0] != "")
           {
               strEingabe1 = aufgeteilt1[0];
               if (aufgeteilt1[1] != "")
               {
                   strEingabe2 = aufgeteilt1[1];
                   if (aufgeteilt1[2] != "")
                   {
                       strEingabe3 = aufgeteilt1[2];
                       if (aufgeteilt1[3] != "")
                       {
                           strEingabe4 = aufgeteilt1[3];
                           if (aufgeteilt1[4] != "")
                           {
                               strEingabe5 = aufgeteilt1[4];
                               if (aufgeteilt1[5] != "")
                               {
                                   strEingabe6 = aufgeteilt1[5];
                                   if (aufgeteilt1[6] != "")
                                   {
                                       strEingabe7 = aufgeteilt1[6];
                                       if (aufgeteilt1[7] != "")
                                       {
                                           strEingabe8 = aufgeteilt1[7];
                                           if (aufgeteilt1[8] != "")
                                           {
                                               strEingabe9 = aufgeteilt1[8];
                                               if (aufgeteilt1[9] != "")
                                               {
                                                   Console.WriteLine("Die Rechnung ist zu lange");
                                                   Console.ReadKey();
                                               }

                                               else { }
                                           }
                                           else { }
                                       }
                                       else { }
                                   }
                                   else { }
                               }
                               else { }
                           }
                           else { }
                       }
                       else { }
                   }
                   else { }
               }
               else { }
           }
           else { }

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!"
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 730
Herkunft: Dortmund

beantworten | zitieren | melden

Mal eben den Sinn eines Arrays hinfällig gemacht... :D
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

He Leute es ist Herbst... die Vögel ziehen gen Süden (sieht doch wirklich aus wie ein Schwarm Vögel im Formationsflug
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
Regenwurm
myCSharp.de - Member



Dabei seit:
Beiträge: 295
Herkunft: Zentralschweiz

beantworten | zitieren | melden

int y2 = rand() % 2; 
//... 
switch (y2) 
{ 
case 1: /*...*/ 
case 2: /*...*/ 
case 3: /*...*/ 
} 

X(
ServiceStack & Angular = =)
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

aus einem OpenSource-Project:


bb.Check = YesNoEnum.Yes


Das Enum hat tatsachlich nur Yes/No.


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!"
private Nachricht | Beiträge des Benutzers
m.knigge
myCSharp.de - Member

Avatar #avatar-3136.png


Dabei seit:
Beiträge: 175
Herkunft: Hannover

beantworten | zitieren | melden

Zitat von gfoidl
Das Enum hat tatsachlich nur Yes/No.

Wie habe ich erst letztens in einem Buch gelesen: Code soll für Veränderungen geschlossen, aber für Erweiterungen offen sein.

Wer weiss, vielleicht wollte der Entwickler sich ja kreativen Freiraum lassen für Enum.Maybe, Enum.Perhaps, Enum.DoNotKnowYet oder Enum.DoesNotMatter ;-)


See ya,
Michael
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von m.knigge am .
Debuggers don't remove Bugs, they only show them in Slow-Motion.
private Nachricht | Beiträge des Benutzers
userid12529
myCSharp.de - Member



Dabei seit:
Beiträge: 208

beantworten | zitieren | melden

[offtopic]
Zitat von m.knigge
Wer weiss, vielleicht wollte der Entwickler sich ja kreativen Freiraum lassen für Enum.Maybe, Enum.Perhaps, Enum.DoNotKnowYet oder Enum.DoesNotMatter ;-)
Dann müsste er aber auch jedes Mal das YesNoEnum mit umbenennen. In YesNoMaybeEnum, YesNoMaybePerhapsEnum usw.
[/offtopic]
private Nachricht | Beiträge des Benutzers