Hier ist der Artikel:
http://thedailywtf.com/Articles/Bulletproof-JavaScript-Detection.aspx
*grien* Okay, dann war das ein Scherz des Kollegen, der's irgendwie ins Produktivsystem geschafft hat. QS gibt einen aus, nehme ich an 😉
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Das wollte ich euch nicht vorenthalten:
(Methodennamen geändert)
// CHANGE IN V2: Man soll statt DoSth jetzt lieber DoSth2 verwenden
if(false == true) obj.DoSth(...);
obj.DoSth2(...);
Grüße,
JasonDelife.
Beim Programmieren löst man die Probleme, die man nicht hätte, programmierte man nicht.
Hi
if(false == true) obj.DoSth(...);
Hihi,
ja diese If-Bedingung wird doch sehr sehr selten erfüllt =)
Das hat irgendwie was von: Wenn die Katze ein Huhn wäre dann würde sie auch Eier legen.
Gruss
Michael
Vieleicht wird auch ein möglicher Weltuntergang überprüft? Wie philosophisch. ^^
Gruß pdelvo
Ich will hier raus -_-:
For j = iStart To iEnd Step iStep
If bDelLast Then
iStart2 = j - 1
Else
iStart2 = j + 1
End If
For i = iStart2 To iEnd Step iStep
If T(j).slength = T(i).slength Then
If T(j).szPOSItemID = T(i).szPOSItemID Then
If T(j).dPrice = T(i).dPrice Then
If T(j).dOrgPrice = T(i).dOrgPrice Then
If T(j).szItemLink = T(i).szItemLink Then
If T(j).szXXX = T(i).szXXX Then
If T(j).szYYY = T(i).szYYY Then
If T(j).szInputString = T(i).szInputString Then
If T(j).bTax = T(i).bTax Then
If T(j).szDiscount = T(i).szDiscount Then
ReDim Preserve T(1 + UBound(T))
...
' Mach was...
Exit For
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Next
Next
Fehlt nur noch zu jedem If ein Else sowie GoTos, dann sind die Russen vollends verwirrt* 😉
:::
Passt nicht direkt zu Coding Style, aber da gerade schon VB gepostet wurde...
VB, much like generic beer and America's Funniest Home Videos is an enabling technology for stupid people.
It allows stupid people to do stupid things on scale that they couldn't accomplish on their own.
While using VB does not make you a dumb programmer, being a dumb programmer does make VB your weapon of choice.
That is unless you really don't know what the bleep you are doing, then its PHP all the way.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Das kann zwar nicht mit dem "Monster" von Easyrider mithalten, aber folgendes If-Konstrukt, auf das ich eben gestoßen bin, hat mich doch kurzzeitig amüsiert. 🙂
If var1 <> "" Then
' Do something
ElseIf var1 = "" Then
' Do something else
End If
Habe hier auch eine schöne Geschichte. Ich fing mal bei einer Firma an, bei der ich mich (auch) um die dortige Webanwendung (PHP + MYSQL) kümmern sollte. Soweit kein Problem dachte ich - denn es hieß, der Code sei sehr gut kommentiert. Das war er auch, irgendwie... Der erste Programmierer hinterließ seine Kommentare auf Englisch, tat zwar nicht Not, war aber okay und irgendwann ging er auch wieder. Der zweite Programmierer war ein Spanier mit eher rudimentären Englisch-Kenntnissen, sein Deutsch war noch schlechter. Also änderte er ca 90% der Kommentare in mehr oder weniger gut übersetztes Spanisch!!! Dann kam ich, sah und ging auch bald wieder 😁 Nebenbei war der Code auch eher was für die Mülltonne. Später habe ich erfahren, dass die komplette Webanwendung für 20.000 EUR neu aufgesetzt wurde - extern...
das is hammer 😉 da wollte einer ein Labyrinth bauen
Ach das nicht so wild, in meiner letzten Firma hat man bei VB nicht mal Einrückungen vorgenommen 😉
OK, ich habe auch zwei lustige Anekdoten
1.) Wir haben uns beim Testen immer mal wieder gewundert, warum der Server manchmal runterfährt ... später hat sich herausgestellt, dass einer in einer J2EE-Anwendung bei gewisser Bedingung System.Exit(0) zurückgegeben hatte 😁
2.) Code-Cleanup-Phase. Wir sollten in einer J2EE-Anwendung alle System.out.prints (also C# wäre Console.WriteLine) rausmachen aus der Applikation ... ein Kollege hat das zu ernst genommen und hat in den JSP-Seiten alle out.printlns rausgemacht 😁 ... nix mehr ging auf fast allen Seiten und wir wunderten uns, bis ich mit dem besagten eine Rauchen war, dann wurde schnell klar, dass es er war.
Ich muss mal grad einen Kollegen schlagen...
if(e.CallBackParameters.Count == 1)
throw new Exception("Insufficient paremeters.");
if (e.CallbackParameters.Count > 0)
{
...
return;
}
//irgendwie springt er hier nicht rein
if(e.CallbackParameters > 1) //WTF?! tino 09-04-30
{
...
}
("..." sind jeweils 10 Zeilen Code ungefähr. Kommentare sind 1:1 übernommen, inklusive des neuen von mir)
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Deinen Kommentar find ich ja fast noch geiler als den Codeschnippsel 😁
private void Mainform_FormClosing(object sender, FormClosingEventArgs e) {
if(conn.NotDisconnected != false) conn.Disconnect();
}
Anmerkung:
conn ist eine Instanz einer selbstprogrammierten Connection-Klasse,
vom gleichen Programmierer wie der Code.
Grüße, JasonDelife.
Beim Programmieren löst man die Probleme, die man nicht hätte, programmierte man nicht.
brr - wie kann man sich sowas nur ausdenken
einmal "NotDisconnected" und dann noch != false als i tuepfelchen #gg
Hallo zusammen
Ich habe ja schon viele return-Statements gesehen, aber dieses übertrifft alles:
return (((((((((((((((((((str2 + "<form method='get'>" + "<input type='hidden' name='preview' value='sendmail'/>") + "<input type='hidden' name='ID' value='" + this.hashkey + "'/>") + "<input type='hidden' name='imgUrl' value='" + image + "'/>") + "<table border='0' cellpadding='4'>") + "<tr><td colspan='2'>" + Gallery.translate("Request price information for this image", this.myProperty.Language) + "</td></tr>") + "<tr>") + "<td>" + Gallery.translate("Name", this.myProperty.Language) + "</td>") + "<td><input type='text' name='Name'/></td>") + "</tr>" + "<tr>") + "<td>" + Gallery.translate("e-mail", this.myProperty.Language) + "</td>") + "<td><input type='text' name='Email'/></td>") + "</tr>" + "<tr>") + "<td>" + Gallery.translate("Image", this.myProperty.Language) + "</td>") + "<td>" + image + "</td>") + "</tr>" + "<tr>") + "<td valign='top'>" + Gallery.translate("Message", this.myProperty.Language) + "</td>") + "<td><textarea name='Message' cols='40' rows='2'></textarea></td>" + "</tr>") + "<tr><td></td><td><input type='submit' value='" + Gallery.translate("send e-mail", this.myProperty.Language) + "'/></td></tr>") + "</form>");
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Ich habe ja schon viele return-Statements gesehen, aber dieses übertrifft alles
WTF!
Also mehr fällt mir dazu wirklich nicht ein...
wenn das wenigstens noch formatiert waere #gg
return (((((((((((((((((((str2 + "
<form method='get'>" +
"<input type='hidden' name='preview' value='sendmail'/>") +
"<input type='hidden' name='ID' value='" + this.hashkey + "'/>") +
"<input type='hidden' name='imgUrl' value='" + image + "'/>") +
"<table border='0' cellpadding='4'>") +
"<tr><td colspan='2'>" +
Gallery.translate("Reque...
Hallo zusammen
Nur schon die öffnenden, runden Klammern sind ja ein Joke für sich.
Alles andere ist nur ein Nebenjoke 😉
ps: Ganz abgesehen davon, dass man diese Klammern gar nicht bräuchte.
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Hallo zusammen
Zwar nicht gerade Horror aber doch lustig 😃
class MySuperComparer : IComparer<SomeType>
{
public int Compare ......
Das steht irgendwo gaaaanz weit unten in einer Klasse als nested class.
edit: Aja und "SomeType" heisst in echt weder "SomeType" noch "Super" g
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Da hat's mir gerade ne ordentliche Gänsehaut beschärt:
int i = path.LastIndexOf('\\');
Text = path.Substring(i+1);
if (Text.IndexOf(".") > 0) Text = Text.Substring(0,Text.LastIndexOf("."));
Hm, das muss doch irgendwie einfacher gehen!? 🤔 😉
ja
string fileName = Path.GetFileNameWithoutExtension(path);
mbg
Rossegger Robert
mehr fragen mehr wissen
Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
ho, danke. Kannte ich nicht. Danke, ich hab noch überlegt was an dem code Horor ist 😃
Mal etwas, das ich gestern in der Webshop-Software "xt:commerce" gefunden habe - Datenbank-Horror, aber passt ja irgendwie auch hier hinein.
Der Webshop kennt Kundengruppen (die haben auch alle eine ID und die entsprechende Tabelle), und außerdem können bestimmten Kundengruppen für bestimmte Artikel in bestimmten Mengen bestimmte Preise (Staffelpreise) zugeordnet werden. Also: T-Shirts sind für Mitglieder der Gruppe "Stammkunden" 8,-, ab 5 Stueck 6,- und ab 10 Stück 5,- - so in der Art.
Nun würde man vermuten, dass die Tabelle mit jenen Staffelpreisen etwa so aussieht:
id-kundengruppenid-artikelid-abmenge-preis
Falsch gedacht. Die Jungs haben eine Tabelle
id-artikelid-abmenge-preis
Und zwar eine solche Tabelle für jede Kundengruppe. Nicht schlimm? Von wegen. Beim Anlegen einer Kundengruppe wird die entsprechende Tabelle angelegt (bennennung name_fortlaufendeInt, also meinname_1 beispielsweise). Beim Löschen der Kundengruppe wird die Tabelle entfernt. Und das geilste: die fortlaufende Nummer im Namen der Tabelle hat nichts, aber auch gar nichts mit der ID der Kundengruppe zu tun - an der Stelle verlässt man sich auf die Reihenfolge der Kundengruppen.
Normalisierung und Konsistenz sind Entwicklern der "Onlineshop software der Spitzenklasse" (Selbstbeschreibung) offenbar Fremdworte.
Und da wundern sich einige, wenn ich allergisch auf die Kombination PHP/MySql reagiere.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Moin,
Was hat denn die Wahl der Sprache mit den Fähigkeiten der Entwickler zu tun ein grundsätzliches Problem anzugehen - egal mit welcher Sprache?
Gruß,
Markus 😃
Habe gestern im dot.net magazin in einem Code-Listing folgendes entdeckt:
i = ++i;
Liest da tatsächlich niemand Korrektur oder gibt es eine sinnvolle Erklärung dafür?
Der Horror liegt im Detail. 😉
Moin,
Was hat denn die Wahl der Sprache mit den Fähigkeiten der Entwickler zu tun ein grundsätzliches Problem anzugehen - egal mit welcher Sprache?
Gruß,
Markus 😃
Nichts. Das habe ich aber auch nicht geschrieben. Man kann sich mit jeder Programmiersprache in den Fuß schießen. Solcherlei Unfälle passieren aber bei der Kombination PHP/MySql verblüffend häufig. Ob das an der weiten Verbreitung von PHP liegt (mehr Anwender => mehr Horrorfabrikanten), ob es daran liegt, dass PHP das Fabrizieren solcher Fehler sehr erleichtert, ob es daran liegt, dass immer um Mitternacht bei Vollmond der eigentlich saubere PHP-Code sich verwandelt und als Wercode in harmlosen Apacheservern Amok läuft - das ist mir persönlich völlig egal. In jedem Fall liegt die Ursache irgendwo bei der Programmiersprache, ob im guten (einfach zu erlernen, zieht Anfänger an) oder schlechten (Design erleichtert Fehler) Sinn. Das trifft auch auf andere Sprachen zu. Folgende Signatur trifft es super, finde ich.
VB, much like generic beer and America's Funniest Home Videos is an enabling technology for stupid people.
It allows stupid people to do stupid things on scale that they couldn't accomplish on their own.
While using VB does not make you a dumb programmer, being a dumb programmer does make VB your weapon of choice.
That is unless you really don't know what the beeep you are doing, then its PHP all the way.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Moin LaTino,
wenn es an PHP liegt, dann deswegen, weil es tatsächlich eine Menge Leute gibt, die in PHP programmieren und die nicht wissen was sie da eigentlich tun...
PHP begünstigt ein schlechtes Datenbank-Design nicht mehr und nicht weniger als jede andere Programmiersprache auch - schlicht deswegen, weil PHP keinen direkten Einfluss auf das Datenbank-Design hat.
Aber back to Topic - ich verstehe was du mit deiner Aussage sagen willst.
Gruß,
Markus 😃
Auszug aus VB:
Public Sub UpdateControl()
Monitor.Enter(ME) 'Control-Zugriff richtig Synchronisieren
[...]
MainForm.ProgressBar.Visible = TRUE
[...]
Monitor.Exit(ME)
End Sub
Und diese Funktion wird natürlich - wie sollte es auch anders sein - aus einem Thread heraus aufgerufen der natürlich nicht der Gui-Thread ist.
s. dazu auch:
Control.Invoke und Application.DoEvents vs. Monitor.Enter / Monitor.Exit
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Mahlzeit,
also überflüssige if konstrukte
...
if (ausdruck)
return true;
else
return false;
...
oder auch
i = ++i;
seh ich ja noch mal ein, hab ich also ich vor jahren die ersten schritte in der programmierung gemacht habe, mitunter auch noch getan. so was macht man doch nicht mutwillig, sondern weil man es nicht besser weiß.
viel schlimmer finde ich da die jungs / mädels die früher viel mit c++ gemacht haben und jetzt ihren sicherlich guten c++ code 1:1 in C# umsetzten.
namespace SevenZip.Compression.LZMA
{
[...]
public class Encoder : ICoder, ISetCoderProperties, IWriteCoderProperties
{
[...]
public void Create(int numPosBits, int numPrevBits)
{
if (m_Coders != null && m_NumPrevBits == numPrevBits && m_NumPosBits == numPosBits)
return;
m_NumPosBits = numPosBits;
m_PosMask = ((uint)1 << numPosBits) - 1;
m_NumPrevBits = numPrevBits;
uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits);
m_Coders = new Encoder2[numStates];
for (uint i = 0; i < numStates; i++)
m_Coders[i].Create();
}
[...]
}
}
ich nich mal sicher ob das geht, das feld is zwar neu angelegt, aber des wegen sind doch noch lange keine elemente drin... 🤔
wer sich sowas mal aus der nähe anschaun mag kann sich zb die das 7zip SDK http://www.7-zip.org/sdk.html in der c# ausgabe anschaun. sehr sehr grusselig...
soll heisen auch bekannte und gute programmieren machen quatsch in sprachen, in dehen sich nicht richtig auskennen.
MfG Tilton
"In der Informatik geht es genauso wenig um Computer wie in der Astonomie um Teleskope."
Edsger W. Dijkstra
heute is wieder so ein tag...
gleich noch was gefunden
http://www.mikrocontroller.net/topic/22952
man beachte
[...]
das könnte man mit if(b&1)crc^=0xA001; bewerkstelligen,
jedoch ist b&1?crc^=40961:0; 2 Buchstaben kürzer, was mit
persönlich gefällt
(das :0 braucht man nur aus
syntaktischen Gründen).
(außerdem geht if() nicht in der
runden for-Klammer s.u.)
also, geschoben werden muss immer:
c=c >> 1 gleichbedeuten mit c>>=1 gleichbedeutend mit c/=2
(zumindest wenn c unsigned ist)
Beim nächsten Durchgang ist Bit1 von Input Data von Interesse, also
schiebe ich es an die Stelle d0:
d=d >> 1 c>>=1 c/=2
statt for(j=0;j<8;j++) schreibe ich for(j=8;j;j--) wieder 2
Buchstaben gespart (-; (das mittlere j ist eine
Kurzform für j!=0)
und statt
for(j=8;j;j--){b=c^d;c/=2;d/=2;if(b&1)crc^=0xA001;} schreibe ich kurz
for(j=8;j;j--,b=c^d,c/=2,d/=2,b&1?c^=40961:0); schade, dass das
überflüssige :0 syntaktisch sein muss
[...]
"2 Buchstaben gespart" ahhhhhhhh...
MfG
"In der Informatik geht es genauso wenig um Computer wie in der Astonomie um Teleskope."
Edsger W. Dijkstra
...Den von Dir genannten Code kann man weiter optimieren...
c=c >> 1 gleichbedeuten mit c>>=1 gleichbedeutend mit c/=2
Ich denke der Compiler macht keinen Unterschied zwischen den ersten beiden Schreibweisen und die Division ist wohl teurer als die Schiebeoperation. Darum kann man wohl kaum von Optimierung reden.
Trotzdem finde ich den Code interessant. 😉
using Skill
Aber gute Compiler Erkennen Divisionen und Multiplikationen mit ganzzahligen vielfachen von 2 und machen an der Stelle dann auch wieder eine Shift-Operation draus.
Daher sollte bei allen 3 Varianten der gleiche Code herauskommen.
Gruß Jake
P. S. Aber vielleicht sollten wir zusammen legen und dem Jungen einen neue großen Festplatte besorgen, damit er nicht bei seinen Sourcen ein paar Bytes einsparen muss.
Hallo Jake,
Aber gute Compiler Erkennen Divisionen und Multiplikationen [...] und machen an der Stelle dann auch wieder eine Shift-Operation draus.
der C#-Compiler erzeugt bei i<<1
und i*2
unterschiedlichen Code. Allerdings kann es gut sein, dass der JIT die Optimierung dann doch noch vornimmt.
... mit ganzzahligen vielfachen von 2 ...
Du meinst, bei Zahlen in deren Primfaktorenzerlegungen nur Zweien enthalten sind (also Zahlen der Form 2 hoch i). Allerdings ist die Optimierung nicht auf solche Zahlen beschränkt. Üblicherweise ist auch z.B. eine Multiplikation mit z.B. 35 (binär 100101) mit (n<<5)+(n<<2)+n
schneller zu berechnen. Die Optimierung lässt sich also bei allen Faktoren anwenden, die in der binären Repräsentation nicht mehr als einen bestimmten Schwellwert von Einsen haben. Solche Optimierungen hat schon mein C-Compiler Anno 1985 gemacht.
herbivore
Hallo Jake,
Aber gute Compiler Erkennen Divisionen und Multiplikationen [...] und machen an der Stelle dann auch wieder eine Shift-Operation draus.
der C#-Compiler erzeugt beii<<1
undi*2
unterschiedlichen Code. Allerdings kann es gut sein, dass der JIT die Optimierung dann doch noch vornimmt.
Bei C# hab ich mir das ganze ehrlich gesagt noch nie angeschaut. Aber zu meiner Zeit als Embedded / Microcontroller-Entwickler hab ich mir desöfteren angeschaut, was der Compiler baut (1kB Programmspeicher) und da war es eben so, dass der Optimizer der guten Compiler Shift-Operationen gemacht hat.
... mit ganzzahligen vielfachen von 2 ...
Du meinst, bei Zahlen in deren Primfaktorenzerlegungen nur Zweien enthalten sind (also Zahlen der Form 2 hoch i).
Ähm, ja ... 😉
Gruß Jake
Wenn schon "optimieren", dann doch bitte exzessiv 😁
b&1?c^=40961:0
//zu
c^=b%2*40961
(man beachte die ausnutzung der operator-precedence und der links-vor-rechts-ausführung. Deshalb muss auch %2 verwendet werden anstatt &1, sonst wären klammern nötig, und die kosten bekanntlich zeichen 😉)
was kürzer ist und kein ":0" am ende hat 8)
Ach und die 8fach-durchlaufende schleife geht anstatt:
for(j=8;j;j--)
//auch kürzer mit
for(j=9;j--;)
solange der index irrelevant ist.
macht also anstatt
for(j=8;j;j--,b=c^d,c/=2,d/=2,b&1?c^=40961:0);
//jetzt
for(j=9;j--;c/=2,d/=2,c^=b%2*40961)b=c^d;
wenn man eine der Anweisungen noch rauszieht.
Das sind 5 gesparte Zeichen ! 👍
Hoffentlich hab ich jetzt keinen Fehler gemacht. Aber DAS wäre CodingStyleHorrer, alles andere ist Kinderkram 8)
beste Grüße
zommi
Wo wir schon bei absichtlichem horror sind: Coderätsel: Was macht dieses Programm?
Ich grübel grad über die Bedeutung folgenden im Reflector gefundenen Codes (class ListBindingHelper):
private static PropertyDescriptorCollection GetListItemPropertiesByType(Type type, PropertyDescriptor[] listAccessors, int startIndex)
{
Type propertyType = listAccessors[startIndex].PropertyType;
startIndex++;
if (startIndex >= listAccessors.Length)
{
return GetListItemProperties(propertyType);
}
return GetListItemPropertiesByType(propertyType, listAccessors, startIndex);
}
Wird aufgerufen mit startIndex 0 , z.B.:
return GetListItemPropertiesByType(type, listAccessors, 0);
sehe ich das richtig, dasses sich um eine kunstvoll endrekursive Formulierung von
private static PropertyDescriptorCollection GetListItemPropertiesByType(Type type, PropertyDescriptor[] listAccessors, int startIndex)
{
return GetListItemProperties(listAccessors[listAccessors.Length-1].PropertyType);
}
handelt?
Der frühe Apfel fängt den Wurm.
Hallo ErfinderDesRades,
ja, ich würde das so sehen, dass dein Formulierung äquivalent zu der Formulierung im Framework ist, vorausgesetzt es steht genug stack space zur Verfügung und startindex ist nicht out of range.
herbivore
Hallo zusammen
Ein Kunstwerk:
int error = 0;
try {
// <Ganz böser[tm] Code :-)
}
catch
{
error++;
}
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Ist doch toll. Wer Fehler zählt, statt sie zu behandeln, hat echt ein dickes Fell. Respekt. 😉
Hmm,
der einzige "Horror" ist, daß die abzufangende Exception nicht spezifiziert ist - ansonsten hätte ich mindestens einen sinnvollen Einsatzzweck für ein solches Konstrukt: Die TimeoutException beim SerialPort.
Allerdings sehe ich den Horror bei einigen Beiträgen hier im Strang nicht - manches ist einfach nur Bad-By-Design und anderes würde ich auf Zeitdruck schieben. Wer immer perfekten Code schreibt werfe den ersten Stein ...
Auch ich habe diese Woche mindestens 2 mal Code geschrieben der hier im Thread wahrscheinlich als "Horror" angesehen würde - aber wenn die Produktion auf ein Tool wartet und der Entwickler nicht mehr da ist habe ich nur zwei Möglichkeiten - schnell nen Fehler "unsauber" beseitigen und riskieren hier zu landen oder 20 Leuten sagen zu müssen das sich eine Serieneinführung eines Produktes leider wegen eines aufwendigen Code Reviews um 2 Tage verschiebt und das dem Unternehmen Kosten in Höhe von 200.000 Euro beschert. Die Entscheidung fällt da leicht ...
Sowas:
++x += –x *= ++x -= -x; // Mal im INet gefunden
ist Horror oder eine Applikation die eine serielle Kommunikation in etwa so realisiert:
port.DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(this.port_DataReceived);
port.Writeline("blablabla";);
Thread.Sleep(1000);
string data = port.ReadLine();
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.port_DataReceived);
und das geschätzte 500 mal innerhalb der Applikation.
Auch sehr beliebt ist es eine Applikation die via Knopfdruck USB Daten austauscht um eine automatische Abfrage zu erweitern welche sich nicht mit der manuellen Abfrage synchronisiert. Der Anwender darf dann das beliebte "Hoffentlich hats geklappt" Lotto spielen wenn er Manuell Daten senden oder empfangen möchte.
Hallo LuckyGeorge,
Wer immer perfekten Code schreibt werfe den ersten Stein ...
hm, es geht ja hier in erster Linie um den Spaß und in zweiter Linie um den Lerneffekt. Und nicht um das Anprangern der Autoren und schon gar nicht als Person.
herbivore