While & else? Fehlt da was oder wollt er dich verschaukeln?
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hallo,
ich hätte jetzt auf ein if
statt auf ein while
und auf ==
statt =
getippt ...
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
vor ein paar Tagen von schwedischen Kollegen:
public bool IsListconntSmalleThaOne(IList<IContact> listOfResults) {
if (listOfResults.Count >= 1)
{
return false;
}
else
{
return true;
}
}
haste das auch auf dailywtf gepostet?
Nee das kam anfang der Woche in ner Kettenmail.
Aber auf der Seite wird das auch schon heftig diskutiert.
EDIT:
Danke für die Seite, mit arbeiten wird das heute nichts mehr 😉
Bis auf das Erben der Exception hab ich ähnliches auch schon programmiert, dies hing aber mit den Umständen zusammen.
Heut weis ich, dass ich keine Exception selbst werfe wenn diese sowieso direkt wieder gefangen wird...
Also in dem Fall: Ob der verantwortliche dafür auf einem Trip war kann ich nicht sagen. - Aber für sowas muss ich mir selbst auch auf die Finger haun.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Gut wenn du direkt die Exception meinst, nein das hab ich nicht getan... wozu auch? Hatte bisher noch keinen Fall wo ich eigene Exceptions brauchte.
// Edit: Und ansosnten reicht eine einfache ApplicationException...
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
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.
> Codejunky <
Hallo zusammen,
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
// 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)
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 |
Also für mich macht das durchaus Sinn?
ccEdit.Visibility = !string.IsNullOrEmpty(item) ? Visibility.Visible : Visibility.Collapsed;
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 |
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
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.
be the hammer, not the nail!
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.
// Constructor
public ThumbnailImageGenerator()
{
//nothing
}
Code vom selben (ehemaligen) Mitarbeiter wie letzter Auszug
Was ist an einem leeren Konstruktor so horrormässig?
using Skill
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.
Was ist an einem leeren Konstruktor so horrormässig?
nichts, es geht ums "nothing"
Also der //Constructor
Kommentar ist wirklich Horror, ein //Nothing
allerdings lesbarer als {}
oder {;}
. Allerdings spricht auch nix gegen // Explicit default constructor
😃
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 |
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.
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
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');
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 |
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"){
...
}
....
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();
//...
}
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
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.
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.
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...
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!"
(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...
int y2 = rand() % 2;
//...
switch (y2)
{
case 1: /*...*/
case 2: /*...*/
case 3: /*...*/
}
X(
ServiceStack & Angular = =)
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!"
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
Debuggers don't remove Bugs, they only show them in Slow-Motion.
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. InYesNoMaybeEnum
,YesNoMaybePerhapsEnum
usw. 😁
Also gegen ein enum Yes|No hätte ich nichts, nur die Namensgebung YesNoEnum ist der wirkliche Coding Horror
Yes|No macht darum keinen Sinn, da es genau dasselbe ist wie true|false. In einer eigenen Klassenbibliothek mag das vielleicht Sinn machen. Sobald man aber auf FW Komponenten zurückgreifen muss oder mehrere Yes|No Ausdrücke verknüpfen möchte, muss man diese wieder in bool konvertieren.
using Skill
Die Sinnhaftigkeit davon bitte in diesem Thread nicht weiter diskutieren.
Passt zwar nur so halb hier rein, aber was der c#-compiler so verzapft wenn man folgendes compiliert, ist eindeutig coding styles horror auf msil ebene!
object obj=....
if(obj is string)
{
//mach was
}
Daraus wird folgender code:
L_000e: ldloc.0
L_000f: isinst string
L_0014: ldnull
L_0015: cgt.un
L_0017: ldc.i4.0
L_0018: ceq
L_001a: stloc.1
L_001b: ldloc.1
L_001c: brtrue.s L_0039
....
Wenn man den ilcode mal exakt rückübersetzen würde:
object obj=....
bool helper=((obj as string)>null)==false;
IfTrue(helper)goto endif; //brtrue
//mach was
endif:;
man beachte, das es auchnoch einen befehl brfalse gibt und die befehle brtrue und brfalse auch direkt auf verweistypen angewendet werden können (wie in c++)
aber was der c#-compiler so verzapft wenn man folgendes compiliert, ist eindeutig coding styles horror auf msil ebene!
Bitte das Ganze nochmal als Release kompilieren und dann nochmal gucken.
Tja. An Debuginformationen kommt man halt nicht umsonst.
Soeben in einem unserer Projekte gefunden:
int intCounter = 0;
if (this.MyList.Count > 0)
{
foreach (List<string> lstr in this.MyList)
{
intCounter++;
}
}
MyOtherList.Add(intCounter.ToString());
Glaube das ganze laeuft unter Performance-Enhancement-Loop.
be the hammer, not the nail!
Man nehme C code:
SMCR = (SMCR & 0xf0) | 1 << SE | read_uint8_t(&atm128PowerBits[powerState]);
Jage ihn durch den nesC compiler, der daraus wieder C code generiert und bekommt:
* (volatile uint8_t *)(0x33 + 0x20) = ((
* (volatile uint8_t *)(0x33 + 0x20) & 0xf0) | (1 << 0)) | __extension__ ({
#line 133
uint16_t __addr16 = (uint16_t )(uint16_t )&McuSleepC__atm128PowerBits[powerState];
#line 133
uint8_t __result;
#line 133
__asm ("lpm""\n\t""mov %0, r0""\n\t" : "=r"(__result) : "z"(__addr16) : "r0");__result;
}
);
Thats magic =)
P.s.
Wer mir erklären kann was der Teil hinter extension macht. Also generell so ein compound statement nicht der exakte code aus dem Beispie, der möge mir eine pn schrieben.
Ich vermute: Führt alles aus und gibt das letzte Statement zurück. Hängt das mit dem extension keyword zusammen?
Hallo zusammen,
gerade eben in einem .NET-Blog von einem Microsoft MVP gefunden:
public static bool HasFile(this HttpPostedFileBase file)
{
return (file != null && file.ContentLength > 0) ? true : false;
}
Was ist falsch daran? s. [Tipp] Anfängerfehler == true / == false.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo m0rius,
ich finde das ganz okay - da gibt es für mich keine Einwände. Warum ist das für dich ein "Coding Style Horror"? In meinen Augen ist das völlig akzeptabel, insbesondere wenn man LINQ verwendet.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.