Hallo Stipo
Der Präfix der Klassen ist mein geringstes Problem. Schlimmer ist die Tatsache dass hier überhaupt eigene Klassen für String, DateTime, Stream, File, ... gibt.
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ß.
Hallo Stipo
Der Präfix der Klassen ist mein geringstes Problem. Schlimmer ist die Tatsache dass hier überhaupt eigene Klassen für String, DateTime, Stream, File, ... gibt.
Grüße
Flo
Hallo Flo,
ich kenne die Implementierung Deiner aufgeführten Klasse nicht aber ich denke das kommt einfach daher das stdstring nicht Unicode-Fähig ist und man sich so eine String Klasse schrieb um genau dies zu erreichen. Da hat man immer seine eigene String-Klasse geschrieben, kenn ich selber noch ... von früher 😃 Jetzt gibts ja zum Glück C++0x und stdu16string/stdu32string wenn auch derzeit nur vom g++.
Aber ich denke eher das dies in Deinem Fall einfach eine "Nachbildung" von stdstring ist 😃
Was mich da noch mehr dran stört ist das C am Anfang des Klassennamens (MFC lässt Grüßen, dort wurde es aber zu einer Zeit gemacht als es noch keine Namespaces gab ...) und das die String-Klasse von einem Stream erbt, dies wiederstrebt mir irgendwie 😃
Gut Schuß
VuuRWerK 😉
die unicode variante des stdstring ist das stdwstring - gabs schon lang - das einzigste was sein kann ist das diese klasse automatisch je nach compiler setting zwischen stdstring und stdwstring gewechselt hat
ich hatte dafuer immer ein define gebastelt und dann nur noch tstring verwendet
stdstring == basic_string<char>
stdwstring == basic_string<wchart_t>
typedef basic_string<TCHAR> tstring;
die vererbungen sind wirklich komisch
string von stream
stream von object
time von object
file von stream
object implementiert bestimmt ein ToString() #ggg
die unicode variante des stdstring ist das stdwstring - gabs schon lang - das einzigste was sein kann ist das diese klasse automatisch je nach compiler setting zwischen stdstring und stdwstring gewechselt hat
Imho ist stdwstring nicht wirklich unicode-fähig sondern nur eine "wide"-char-string Variante, d.h. man kann pro Zeichen 2 byte belegen, das komplette Unicode hat aber 4 (UC4). Es gibt noch eine UC2-Variante wo man wieder stdwstring benutzen kann, hat dann aber nur eine beschränkte Unicode Unterstützung.
ich hatte dafuer immer ein define gebastelt und dann nur noch tstring verwendet
stdstring == basic_string<char>
stdwstring == basic_string<wchart_t>
typedef basic_string<TCHAR> tstring;
TCHAR ist nur ein typedef auf wchar_t 😉
Hier ein Ausschnitt aus der tchar.h:
ifndef _TCHAR_DEFINED
#if !__STDC__
typedef wchar_t TCHAR;
#endif
#define _TCHAR_DEFINED
#endif
die vererbungen sind wirklich komisch
string von stream
stream von object
time von object
file von streamobject implementiert bestimmt ein ToString() #ggg
Und natürlich auch eine Copy/Clone, Finalize etc ... Methode xD
Gut Schuß
VuuRWerK 😉
ich hatte dafuer immer ein define gebastelt und dann nur noch tstring verwendet
stdstring == basic_string<char>
stdwstring == basic_string<wchart_t>
typedef basic_string<TCHAR> tstring;
TCHAR ist nur ein typedef auf wchar_t 😉
Hier ein Ausschnitt aus der tchar.h:ifndef _TCHAR_DEFINED #if !__STDC__ typedef wchar_t TCHAR; #endif #define _TCHAR_DEFINED #endif
ich weiss, ist n bissl bloed ausgedrueckt - die ersten beiden zeilen sollte nur zeigen was string und wstring eigentlich ist und die dritte zeile zeigt das was ich sonst immer mach
Heute gefunden:
string strdatemonth = Convert.ToString(DateTime.Now.Month);
string strdateyear = Convert.ToString(DateTime.Now.Year);
string strdate = Convert.ToString((DateTime.Now.Month) + "." + DateTime.Now.Year);
if (Convert.ToInt32(strdatemonth) < 10)
{
strdatemonth = "0" + Convert.ToString((DateTime.Now.Month));
}
tbxData.Text = "01." + strdatemonth + "." + strdateyear;
und durch:
DateTime? dtDate = DateTime.Now;
tbxDataFrom.Text = "01." + Convert.ToString(dtDate.Value.ToString("MM.yyyy"));
ersetzt.
Mit dem String strdate wurde uebrigens niewieder was getrieben..
be the hammer, not the nail!
Hi aequitas,
Convert.ToString(dtDate.Value.ToString("MM.yyyy"))
könntest du noch zu
dtDate.Value.ToString("MM.yyyy")
verkürzen
Wenn wir gerade dabei sind... 😉 Das ganze kann man völlig kürzen zu:
tbxDataFrom.Text = DateTime.Now.ToString("01.MM.yyyy");
@aequitas: Hat es einen bestimmten Grund, warum du DateTime.Now in einem Nullable zwischenspeicherst?
dN!3L
string strdatemonth = Convert.ToString(DateTime.Now.Month); string strdateyear = Convert.ToString(DateTime.Now.Year); string strdate = Convert.ToString((DateTime.Now.Month) + "." + DateTime.Now.Year); if (Convert.ToInt32(strdatemonth) < 10) { strdatemonth = "0" + Convert.ToString((DateTime.Now.Month)); } tbxData.Text = "01." + strdatemonth + "." + strdateyear;
Ohje, dabei ist einer der großen Pluspunkte des .NET Frameworks vor allem der, dass man sich solche Sachen sparen kann. Sehe teilweise bei mir in der Firma auch ähnliche Kunststücke. Dass die Leute sich nicht mal ein wenig mit dem Framework auseinandersetzen können... 😉
DateTime? dtDate = DateTime.Now; tbxDataFrom.Text = "01." + Convert.ToString(dtDate.Value.ToString("MM.yyyy"));
An der Lösung stören mich aber ehrlich gesagt auch ein paar Dinge: 1. Wieso benutzt du Nullable DateTime, wenn darin sowieso mit DateTime.Now auf jeden Fall ein Wert gespeichert wird? 2. Die ToString-Methode gibt ja sowieso einen String zurück, also wieso nochmal mit Convert.ToString in einen String konvertieren? Außerdem könnte man die ToString-Methode auch folgendermaßen aufrufen:
dtDate.Value.ToString("01.MM.yyyy");
😉
EDIT: Oh, zu langsam... 🙁
@aequitas: Hat es einen bestimmten Grund, warum du DateTime.Now in einem Nullable zwischenspeicherst?
Weil ich an anderer stelle auf das .HasValue Property zugreife.
be the hammer, not the nail!
Hallo zusammen
Was ganz ähnliches:
01.DateTime now = DateTime.Now;
02.string fileName = now.Year.ToString("0000")
03. + now.Month.ToString("00") + now.Day.ToString("00") + "_"
04. + now.Hour.ToString("00") + now.Second.ToString("00")
05. + now.Millisecond.ToString("000") + ".txt";
vs
01.DateTime jetzt = DateTime.Now;
02.string fileName = jetzt.ToString("yyyyMMdd_HHmmss_FFF") + ".txt";
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
zwar nicht unbedingt coding style horror aber trotzdem interessant:
gerade im Quake Live Forum gelesen, wo es darum geht in welcher sprache die engine geschrieben wurde (tatsächlich in C):
C++ is unlikely. All id Tech engines are written in C... I dont see why that should have been changed for QL... You don't really need C++ since you can emulate classes with structs and function pointers... you can completely avoid C++ and co-workers who are fond of obfuscating the codebase by overloading operators.
Schön, dass man Fuktionszeiger in Strukturen laden kann, aber Klassen würde ich das nicht nennen.
Geschweige denn wüsste ich nicht wie man den this zeiger emulieren will 🤔
... ausser natürlich per Parameter, was aber redundant wäre (meineStruktur.Operation(&meineStruktur, ...)
using Skill
Mal ne Frage ob ich hier coding style horror schreibe. ist das io?
bool? value = GetFuckingBool();
if(value == true)
...
Gibt es eine andere Möglichkeit um auf true zu prüfen?
Gruß pdelvo
Geschweige denn wüsste ich nicht wie man den this zeiger emulieren will ... ausser natürlich per Parameter, was aber redundant wäre meineStruktur.Operation(&meineStruktur, ...)
Wie in .NET auch: Nicht-statische Funktionen unterscheiden sich von statischen auch nur darin, dass der this-Pointer der erste (implizite) Parameter ist. Also einfach Operation(&meineStruktur, ...)
@pdelvo:
if (value.HasValue && value.Value) ...
😉
@pdelvo:
Ich würds so machen:
if (value?? false)
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!"
gfoidl: Ich würd den fancy name operator nicht benutzen, denn er ist nicht so bekannt. Ich find dn!3ls version besser, weil ich mit einem Blick sehen kann, was genau gemeint ist, bei value?? false nicht. "Sowenig wie möglich, soviel wie nötig" wäre hier ganz angebracht, ich find die etwas höhere verbosity von dn!3l lesbarer. Es ist nicht nötig, aber hübscher und schneller ohne zu denken sichtbar.
Ich würd den fancy name operator nicht benutzen, denn er ist nicht so bekannt.
*fancy name* := coalesce, Bekanntheitsgrad: Kommt auf den Programmierer drauf an 😁
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!"
stimmt, ich kenn ihn auch, aber ich muss immer überlegen, was genau gemeint ist - und dann nehm ich die etwas längere Schreibweise, solange ich dann nicht groß drüber nachdenken muss 😉
(Dafür hat er/sie dann was für's nächste mal gelernt. Ich finde den Operator praktisch und da er Teil der Sprache ist darf man ihn eigentlich schon verwenden 😉){"grey"}
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ß.
goto ist auch Teil der Sprache 😉
Hoecker, sie sind raus!!
goto nach Hause! 😁
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ß.
Gerade gefunden:
bool result = true;
if (result == true)
{
Console.WriteLine("The variable is set to true.");
}
else
{
Console.WriteLine("The variable is set to false.");
}
Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!
Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!
Ich hab auf das eh im Community-Index hingewiesen, aber anscheinend ist das Beispiel so klassisch das es nicht geändert wird 😉
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!"
Naja, as Beispiel kann man es ja geten lassen. Habe schon sinnlosere gesehen.
Wer liest solche Beispiele eigentlich? If und else sind ja schon als Wörter sebstklärend.
Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!
Auch nett, ist die Beschreibung:
Die Ausgabe lautet The flag is set to true.
Der Schreiber hatte wohl keinen guten Tag 🙂
Die Ausgabe lautet The flag is set to true.
Der Schreiber hatte wohl keinen guten Tag 😃
Im nächsten Absatz heißt es sogar:
Wenn die Auswertung des Ausdrucks zwischen den Klammern true ergibt, wird die Console.WriteLine("The boolean flag is set to true."); -Anweisung ausgeführt.
Hallo winSharp93, hallo tkrasinger,
das hat nichts mit schlechtem Tag zu tun. Die Bezeichnung Flag wird auch für einzelne boolsche Werte verwendet. So war unter OS/2 in der ungarischen Notation das Prefix für (einfache) boolsche Werte f wie Flag.
herbivore
ähem, das war auch nicht gemeint.
Wenn die Anweisung: Console.WriteLine("The **variable **is set to true."); lautet, kann die Ausgabe nicht "The **flag **is set to true." lauteten, oder gar die nicht vorhandene anweisung Console.WriteLine("The boolean flag is set to true."); ausgeführt werden.
Weiter gehts auch so im letzten beispiel, da sind die Anweisungen immer: Console.WriteLine("Character .." und die gemeinete Ausgabe wäre: "The character" ... einfach nur schlampig geschrieben.
If object1 Is Nothing AndAlso object1.property1 Then
object1 = new object()
End If
🤔
Eben in unserem Sourcecode entdeckt schäm:
Boolean failure = false;
try
{
// ...
failure = false;
}
catch (Exception ex)
{
failure = true;
}
// ...
if (failure)
{
return false;
}
else
{
return true;
}
Wurde erst kürzlich geschrieben.. 8o
> Codejunky <
Eine weitere Delikatesse:
// Check this
if (this == null)
{
return false;
}
und
if (this.Disposing == true)
{
return false;
}
if (this.IsDisposed == true)
{
return false;
}
return true;
> Codejunky <
Hallo JunkyXL,
werdet ihr nach Zeilen bezahlt?
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!"
werdet ihr nach Zeilen bezahlt?
Das passiert eben, wenn Metriken zur Leistungserfassung eingesetzt werden... 😉
Also
if (this == null)
ist schon sehr genial...
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
private void dowloadButton_Click(object sender, EventArgs e)
{
// Start the download operation in the background.
this.backgroundWorker1.RunWorkerAsync();
// Disable the button for the duration of the download.
this.dowloadButton.Enabled = false;
// Wait for the BackgroundWorker to finish the download.
while (this.backgroundWorker1.IsBusy)
{
// Keep UI messages moving, so the form remains
// responsive during the asynchronous operation.
Application.DoEvents();
}
// The download is done, so enable the button.
this.dowloadButton.Enabled = true;
}
Quelle: MSDN: BackgroundWorker.RunWorkerAsync()-Methode 8o
Grüße, JasonDelife.
Beim Programmieren löst man die Probleme, die man nicht hätte, programmierte man nicht.
Hallo,
sowas finde ich schon richtig traurig dass das in der Referenz für die .net-Sprachen zu finden ist. Gerade dort sollte mit gutem Beispiel voran gegangen werden 🙄
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!"
uiuiuiui.. gerade ein altes PHP "Projekt" durchgesehen 😄
class user extends database
....
//Hole den Datensatz wo der nickname dem Post-Nickname entspricht
$SQLString = "SELECT userID, password, mail, rights FROM user WHERE nickname ='" .
$_POST['nickname'] . "'";
$this->query( $SQLString );
Database beinhaltet irgendwie Funktionalitäten um auf die MySQL Datenbank zuzugreifen und wurde von User geerbt um z.b. Logindaten zu prüfen. DAS nenne ich mal Vererbung der Implementierung 😉
Und ja: Hi @ SQL Injection
😉
[edit]
würde wohl eher in Design Styles Horror passen und zwar von der übelsten Sorte 😉
using Skill
Hallo zusammen,
if (this == null)
ist schon sehr genial...
das ist echt eine perle unter den horror codes 😃
Nein, das kann eine durchaus sinnvolle Abfrage sein.
ich frage mich gerade in welcher sprache so ein konstrukt sinnvoll wäre... 😃
Zum Beispiel in C#.
Der Grund ist einfach. Es gibt .NET Sprachen, in denen es möglich ist, Methoden ohne Instanz (also mit null) aufzurufen. Deshalb wird auch in einigen (grundlegenden) Framework-Klassen this auf null geprüft, z.B. in String.Equals. Die ganze Geschichte gibt es in Entropy Overload: Call vs CallVirt for C# non-virtual instance methods. Da andere Sprachen auch in C# geschriebene Methoden aufrufen können, hat man das Problem also auch in C#.
herbivore
Das Beste was ich jemals gesehen habe, war die Implementierung einer Round()-Methode (Ironie die es ja im Framework nicht vordefiniert gibt Ironie), wobei nicht das anzunehmende "mal 10, abschneiden, durch 10" oder ähnliches verwendet wurde, sondern die Kommazahl erst in einen String umgewandelt wurde, dann mittels Split am Komma aufgeteilt wurde usw.
Ich konnt nicht mehr vor lachen 😄
There are 10 kind of people, those who understand binary and those who don't.
(Ironie die es ja im Framework nicht vordefiniert gibt Ironie),
Schon mal versucht?
double d = 2.5;
Console.WriteLine(Math.Round(d, 0));
:evil:
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ß.
Naja gut, wenn man natürlich nur das versucht 😄
There are 10 kind of people, those who understand binary and those who don't.
Aus der SharpZLib:
/// <summary>
/// Test a value to see if it matches the filter.
/// </summary>
/// <param name="name">The value to test.</param>
/// <returns>True if the value matches, false otherwise.</returns>
public bool IsMatch(string name)
{
return (IsIncluded(name) == true) && (IsExcluded(name) == false);
}
noch was schönes:
switch (einString)
{
case "asdf":
arg1 = "asdf";
arg2 = "asdf";
arg3 = "asdf";
break;
case "wert":
arg1 = "wert";
arg2 = "wert";
arg3 = "wert";
break;
case "yxcv":
arg1 = "yxcv";
arg2 = "yxcv";
arg3 = "yxcv";
break;
case "fghj":
arg1 = "fghj";
arg2 = "fghj";
arg3 = "fghj";
break;
//usw usw... an die 20 mal....
}
unglaublich das es dem programmierer der das hier verbrochen hat überhaupt nciht aufgefallen ist, was für *#!? das ist.
oh mann ich habe bei uns gerade eine 5000 zeilen !!! lange codedatei entdeckt die soviel shitcode enthält, das ich hier noch rund 100 posts machen könnte (kein scherz) ohne mich zu wiederholen (im gegensatz zu demjenigen der da programmiert hat)
z.b:
if(string.IsNullOrEmpty(mystring))
{
mystrring = GetMystringFromSomewhere();
// tue 30 zeilen lang etwas bestimmtes
}
else
{
// tue 30 zeilen lang exakt das selbe wie weiter oben
}
ich glaub der wurde echt nach LOC bezahlt und muss dafür ein fürstliches gehalt bekommen haben....
Hallo
Ehrlich gesagt, kann ich nicht immer lachen, weil ich nicht verstehe, was an dem Codeschnipsel witzig sein soll (mir fehlen da die programmierkenntnisse), aber die letzten beiden von jack30lena waren wirklich köstlich.
chrische
Das erste Beispiel von JAck30lena erinnert mich irgendwie an dasjenige von dem Typen der die Monatsnummern von 0-11 zu 1-12 umwandeln wollte und dann irgendwie sowas gemacht hat:
switch(month)
{
case 0:
month = 1;
break;
case 1:
month = 2;
break;
...
}
using Skill
Wir haben unseren Infromathiklehrer, der uns Java beibringen soll gestern 5mal korrigiert (4mal davon ich).
1. + 2. + 3.)
istgleich boolean; //1.
istgleich=string1.equals(string2); //2.
if istgleich //3.
{
//machwas
}
4. + 5.)
void MyClass(string text) ; //4.
{
MyClass.setText(text); //5. setText ist eine Instanzmethode der Basisklasse
}
6.)
Color red=new Color(255.0 ,0.0 ,0.0 );//6. er wollte eine überladung mit 3 floats benutzen
Der Typ macht dauernd Fehler an der Tafel hat auch schonmal folgendes geschrieben:
if(Methode(....))
{
return true;
}
return false;
Sein Kommentar: "Sei doch nicht so Pingelich" 😁
Naja aber bis auf seine Syntaxunkenntnis ist er recht nett, beherscht die Theorie und kann auch ganz anschaulich erklären und so.
Zitat von: herbivore
Hallo zusammen,if (this == null)
ist schon sehr genial...
das ist echt eine perle unter den horror codes 😃
Nein, das kann eine durchaus sinnvolle Abfrage sein.
Jetzt weiß ich immerhin warum man virtuelle Methoden der Klasse nicht im Konstruktor aufruft/aufrufen sollte.
Ich kann aber zu 99,9% sagen, dass das nicht die Absicht unseres Mitarbeiters war.
Das ging eher in die Richtung "Sicher ist sicher" so wie hier:
Aus der SharpZLib:
public bool IsMatch(string name) { return (IsIncluded(name) == true) && (IsExcluded(name) == false); }
> Codejunky <