Wie dokumentiert ihr Einmannprojekte?

  • Allgemein

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Nunja aber du kannst ja nicht denken, dass deine eigene Meinung besser ist, wenn dir gleichzeitig klar ist, dass für den TE deine Meinung vollkommen daneben sein kann, denn schließlich ist soetwas wie hier für jedes Individuum anders.

    Und ich glaube @RodFromGermany meinte mit seinem Satz eben XML kommentare.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    C-Quellcode

    1. void parseHeader(char* header)
    2. auto head = (long long*)header;
    3. auto lowercaseMask = (0x20 << 56 | 0x20 << 48 | 0x20 << 40 | ...);
    4. head &= ~lowercaseMask;
    5. if (head == 0x52454645)


    Code ohne kommentare, es ist trotzdem guter Code. Ist bereits eine Vereinfachung des eigentlichen Codes. Hab ich so ähnlich auch schon in C# mit unsafe gesehen.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jvbsl“ ()

    Hmm - ob das guter Code ist, kann ich kaum beurteilen - kenne die Sprache zuwenig.
    Sieht mir aber nicht so aus, dass sich das selbst erklärte, wenn ich die Sprache kennte.
    Also gut möglich, dasses fabelhaft funktioniert, aber seine Unverständlichkeit ist ein signifikanter Minuspunkt.
    Ist das überhaupt eine Methode?
    Zumindest ich kann nicht erkennen, was man sich dabei gedacht haben mag - kann auch dran liegen, dass gänzlich aussm Kontext gerissen.



    jvbsl schrieb:

    Nunja aber du kannst ja nicht denken, dass deine eigene Meinung besser ist, wenn dir gleichzeitig klar ist, dass für den TE deine Meinung vollkommen daneben sein kann,...
    Doch, das kann ich denken!
    Und ich denke sogar, der TE denkt dasselbe von seiner Meinung.
    Und wenn wir Argumente austauschen, dann kann sich etwas ändern, bei ihm, mir oder beiden.
    Aber konkret denke ich garnicht, dass meine Meinung für ihn daneben ist, sondern ich rechne eher mit einer Offenheit für viele Meinungen.
    Also gewissermassen, dasser gar keine besonders ausgeprägte Meinung hat. Schließlich hat er um Meinungen gebeten - er will sich seine Meinung bilden, und dabei ist ein sachlicher Disput sicherlich hilfreich.

    jvbsl schrieb:

    Und ich glaube @RodFromGermany meinte mit seinem Satz eben XML kommentare.
    ja, und ich meine auch XML-Kommentare.
    Auch Xml-Schwafel-Kommentare sind Schwafel-Kommentare und tragen nix bei, ausser Platz zu verschwenden und Aufmerksamkeit abzulenken.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades @~blaze~ ich verfolge amüsiert eure interessanten Dialoge - und will da unbedingt mitmischen :)

    @ErfinderDesRades
    Zu dokumentieren ist Code, der nicht selbsterklärend ist.

    Wenn man drauf aus ist könnte man diese Aussage jetzt aufgreifen und eine Diskussion über Begriffsdefinitionen beginnen bei der das Thema "Selbsterklärender Code" zerpflückt und auseinandergerupft wird. Ich z.B. würde dir sagen dass Menschen mit weit auseinanderliegenden Kenntnisständen (Einsteiger und Experten) eine ganz unterschiedliche Auffassung des Begriffs "selbsterklärend" haben.
    Aber gut, damit wir damit nicht anfangen müssen stelle ich nochmal fest dass in diesem Thread entweder davon ausgegangen wird dass niemand anderes das Projekt sieht oder dass der nächste einen ähnlichen Kenntnisstand hat wie der Programmierer der den Code geschrieben hat. Wobei natürlich in der realen Welt (daran orientiert sich beisp. mein Beitrag) beides, beides nicht oder etwas komplett anderes (und ggf. mehreres davon zugleich) zutreffend sein kann.

    Und deswegen würde ich deine Vorgehensweise jetzt pauschal gar nicht widerlegen müssen (oder wollen). Sicherlich, ich würde mit einer Einstellung hinsichtlich Dokumentation und Kommentation so wie du sie hast gar nicht zurecht kommen. Aber ich arbeite ja auch ganz anders als du. Mit anderen Leuten, anderen Projekten, anderem Code (-Stil) etc. Deswegen mach du so wie du am besten arbeiten kannst - nur darauf kommt's ja an.

    Trotzdem muss ich dir bei einer Sache unbedingt widersprechen. Jetzt kommt's:

    Und auch in 10 Jahren wird man wissen, was ein Konstruktor ist und was ein filePath - auch ohne mich zu fragen.

    Hier kann ich nur teilweise zustimmen . Schließlich reden wir von Kommentaren im Sinne einer Funktions- oder Vorgangsbeschreibung und nicht im Sinne einer Definition - da muss hier klar differenziert werden. Über eine Methode schreibe ich im Kommentar ja sicherlich niemals "Das ist eine Klassenmethode" - ist ja vollkommener Humbug. Ich sag's nur nochmal weil deine "Begründung" davon ausgeht dass wir aus deiner Sicht ausschließlich von Kommentaren sprechen die "selbsterklärend" und mehr oder weniger unsinnig oder überflüssig sind - das stimmt aber nicht und hier würde ich dich bitten, unsere Aussagen nicht als Antworten auf Fragen zu interpretieren, die weitaus dümmer sind als die eigentliche Frage (die ja gut ist) auf der der Thread basiert.
    Zum Thema Konstruktor, ich nehme mal zum Vergleich PHP weil mir das am geläufigsten ist. Wenn ich da im Konstrutor ein $filter als Parameter habe, woher soll der Benutzer wissen was er hier übergeben muss, wenn ich im Code dann je nach Datentyp von $filter unterschiedliche Aktionen ausführe? Das kann er ohne Kommentare nicht wissen und -um deine "Begründung" zu widerlegen- auch nicht wenn ich als Kommentar drüber schreibe dass das ein Konstruktor ist. Stimmt's? ;)

    Ich bin der Meinung, meine Meinung ist die beste, und alle anderen Meinungen sind folglich weniger gut - tatsächlich. Denn wäre eine Meinung besser als meine, würde ich sie ja sofort übernehmen.

    Gute Einstellung. Man sollte immer aufgeschlossen genug sein um sich jede andere Meinung anzuhören. Und nichts anderes ist das ja hier alles, nur persönliche Meinungen aufgrund der eigenen persönlichen Erfahrung. Da gibt's einfach einige Punkte bei denen es kein definitives richtig und falsch gibt.


    Link :thumbup:
    Hello World

    Link schrieb:

    Zum Thema Konstruktor, ich nehme mal zum Vergleich PHP weil mir das am geläufigsten ist. Wenn ich da im Konstrutor ein $filter als Parameter habe, woher soll der Benutzer wissen was er hier übergeben muss, wenn ich im Code dann je nach Datentyp von $filter unterschiedliche Aktionen ausführe? Das kann er ohne Kommentare nicht wissen und -um deine "Begründung" zu widerlegen- auch nicht wenn ich als Kommentar drüber schreibe dass das ein Konstruktor ist. Stimmt's?


    Davon war aber auch gar nicht die Rede. ErfinderDesRades sagt ja, dass er sinnvolle Kommentare sinnvoll findet. Bei uns unterscheiden sich nur die Arten, was dieses "sinnvoll" angeht.

    Link schrieb:

    Gute Einstellung.

    Da kann man jetzt gespaltener Meinung sein. Ich denke, dass dies einerseits zum Entwickeln von Scheuklappen ausarten kann, da man sich im Extrem dazu versteift, nur noch die eigene Meinung zu verteidigen, weil man nicht merkt, dass andere Meinungen ebenfalls Signifikanz haben.
    Andererseits ist es wichtig, dass man die eigene Meinung nicht zurückstellt und zu ihr steht. Die eigene Meinung ist niemals das Gelbe vom Ei, sage ich. Das gilt für meine, wie für die aller anderen auch. Die Gesellschaft ist ein sich optimierender Prozess, in dem jeder etwas beitragen kann. Jeder macht Fehler und aus diesen Fehlern und dem wertvollen Wissen anderer kann man lernen, diese Fehler nicht nocheinmal zu machen oder optimalere Wege zu finden, Probleme zu lösen. Im Prinzip optimiert sich die Gesellschaft in verschiedenen Aspekten. Ob man dies auf sich zulässt, kann nur jeder für sich entscheiden.

    Ich würde jetzt aber ehrlich gesagt die philosophische Diskussion nur ungern weiter ausufern lassen, auch wenn sie sicher interessant sein mag (gerne aber privat, sofern es auch irgendwann ein Ende findet). Es sind noch immer konkrete Fragen zu beantworten:

    Nils_Kr schrieb:

    Die xml-Kommentare und Sandcastle sind mir auch schon über den Weg gelaufen. Hat jemand eine Empfehlung für einen Nachfolger? Eine erste (kurze) Suche, hat nur wenig brauchbares ergeben.


    Viele Grüße
    ~blaze~

    Link schrieb:

    ich verfolge amüsiert eure interessanten Dialoge - und will da unbedingt mitmischen ;)
    Ja, ne? Mehr OffTopic geht eiglich nicht, aber hier im OffTopic-Forum sind wir also sowas von OnTopic ;)
    Edit: Ups - hat man uns verschoben? 8|



    Link schrieb:

    Schließlich reden wir von Kommentaren im Sinne einer Funktions- oder Vorgangsbeschreibung und nicht im Sinne einer Definition - da muss hier klar differenziert werden. Über eine Methode schreibe ich im Kommentar ja sicherlich niemals "Das ist eine Klassenmethode" - ist ja vollkommener Humbug.
    Na, da hab ich aber schon massenhaft anderes gesehen.
    Was hälst du von dem hier?

    Summary und Parameters könnten nichtssagender doch nicht sein, oder?
    Und sone Grütze steht in jedem Konstruktor jeder Klasse des gesamten verdammten Frameworks (na vlt. gibts Ausnahmen - ich hab jetzt nicht alle durchgeguckt).
    Also wäre ich Verfechter von irgendwem müsste ich jetzt sagen: "Microsoft macht das so, also ist das Vorbild".
    (leider ist das tatsächlich Vorbild, aber in ganzngar ungutem Sinne)

    Hingegen der Exception-Kommentar ist definitiv unerlässlich.

    Jdfs. von so einem Geschwafel rede ich

    Link schrieb:

    Ich sag's nur nochmal weil deine "Begründung" davon ausgeht dass wir aus deiner Sicht ausschließlich von Kommentaren sprechen die "selbsterklärend" und mehr oder weniger unsinnig oder überflüssig sind...
    versteh ich nicht. Meine Begründung geht von garnix aus. Ich sage nur, Geschwafel soll man unterlassen. Ja, begründen tu ichs auch, nämlich damit, dasses Platz wegnimmt und Aufmerksamkeit ablenkt - aber ich gehe nicht von irgendwelchen "selbsterklärenden" Kommentaren aus, von denen "ihr aus meiner Sicht" sprecht. Wie gesagt: Dein Satz ergibt mir gar keinen Sinn.



    Ja, und zu Php kannich garnix sagen.
    Wenns in Php Klassen gibt, und Konstruktoren - kommt ja auch auf die Klasse an, wo der Konstruktor drinne ist, ob ein Konstruktor-Parameter genügend selbsterklärend ist, wenn er $filter heisst.
    In einer Klasse namens Config täte $filter als KonstruktorParameter mir nix sagen, in einer Klasse EmployeeQuery schon eher.



    ~blaze~ schrieb:

    Ich denke, dass dies einerseits zum Entwickeln von Scheuklappen ausarten kann, da man sich im Extrem dazu versteift, nur noch die eigene Meinung zu verteidigen, weil man nicht merkt, dass andere Meinungen ebenfalls Signifikanz haben.
    Nee - dann hätte ich mich vergallopiert.
    "Meine" Meinung ist überhaupt kein Wert an sich. Also ich "verteidige" keine Meinung - nur weil sie "meine" ist.
    Tatsächlich bin ich der Gewinner, wenn ich in einem "Meinungsstreit" "unterliege".
    Weil genau dann! - hab ich was gelernt.
    Und das ist der einzige Gewinn, auf den es ankommt.
    (meine Meinung :D )

    Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich denke, dass dies einerseits zum Entwickeln von Scheuklappen ausarten kann, da man sich im Extrem dazu versteift, nur noch die eigene Meinung zu verteidigen, weil man nicht merkt, dass andere Meinungen ebenfalls Signifikanz haben.

    Man sollte immer aufgeschlossen genug sein um sich jede andere Meinung anzuhören.

    Also im Grunde sagen wir das gleiche aber das was du geschrieben hast ist eher richtig als meins weil du ... mehr Wörter für die Umschreibung benutzt hast ... ? k :thumbup:

    ... sinnvolle Kommentare sind sinnvoll ...

    Lirum larum, ich fang' jetzt hier nicht an zu definieren was sinnvoll oder sinnlos ist (wobei ich den Begriff "sinnlos" am Beispiel des zitierten Satzes definieren könnte). Das kann man sowieso nur selbst entscheiden. Ich bin der der den Code schreibt und wenn ich es angemessen finde, schreibe ich einen Kommentar dazu - mit der Tendenz lieber eine Zeile mehr als gar nix. Es ist definitiv nicht so dass Kommentare im Code stören oder die Lesbarkeit einschränken, eher das Gegenteil ist der Fall - okay, zumindest gilt das für mein Empfinden. Sollte es andere Menschen tatsächlich stören würde ich denjenigen einfach fragen warum er mit einer schrottigen crap IDE arbeitet, denn in jeder halbwegs guten Entwicklungsumgebung lassen sich die Kommentarblöcke bei Bedarf via Klick ein- und ausblenden - und wenn man will kann man das in den Setting by default abstellen. Informiere dich ggf. auch mal über "code folding" - in manchen Situationen kann das sinnvoll sein.
    Dennoch, Kommentation in Bezug auf Übersichtlichkeit sollte hier wirklich nicht als irgendeine schwammige Art von Argument zugelassen sein.

    Ich würde jetzt aber ehrlich gesagt die philosophische Diskussion nur ungern weiter ausufern lassen, auch wenn sie sicher interessant sein mag (gerne aber privat, sofern es auch irgendwann ein Ende findet)

    Nein ich würde da auch kein absehbares Ende sehen - zumindest keins wo sich am Schluss alle einig sein werden. Was ja auch gar nicht Sinn und Zweck der Sache ist. Trotzdem finde ich es interessant zu lesen wie andere Leute arbeiten. Dem TE muss halt schon auch klar sein dass er hier keine definitive Aussage bekommt wie genau vorzugehen ist, sondern dass wir nur Anregungen geben können.

    Nebenher kann man sich ja auch untereinander austauschen und diskutieren (eben weil ja hier nicht die Gefahr ist dass die "richtige Antwort" sonst untergeht). Ich sag' das nur weil teilweise auch im OffTopic ja dann irgendwann immer jemand kommt und meint dass die Diskussion zu sehr vom Thema abschweift, wo ich mir dann schon denke "ja gut, aber deswegen bin ich ja auch extra hier im OT".

    Was hälst du von dem hier?

    Ja, ranziger Shit wie du ja ebenfalls festgestellt hast. Aber von dieser Art Kommentar hat ja auch nirgendwo jemals jemand gesprochen.

    Und sone Grütze steht in jedem Konstruktor jeder Klasse des gesamten verdammten Frameworks

    Gut das mag natürlich sein. Leider kenne ich speziell VisualStudio jetzt nicht in- und auswendig, aber von anderen IDEs bin ich es gewöhnt dass ich selbst festlegen kann welche Arten von Kommentaren automatisch generiert werden.

    Achja genau, lass uns an der Stelle noch kurz zwischen Dokumentation, Kommentare und Kommentardokumentation unterscheiden.
    @TE das wäre vielleicht auch für dich gut zu wissen:

    Kommentar
    Kommentare sind immer die Texte die man selbst schreibt (Beschreibungen zu einem bestimmten Vorgang oder was eine Klasse/Lib/Methode/Sonstwas tut.

    Kommentardokumentation
    Viele IDEs erstellen automatisch einen "Kommentar" in dem direkt zu lesen ist, welche Parameter z.B. eine Funktion hat (inkl. Name, Typ, Beschreibung, ggf. visibility etc..). Wie immer ziehe ich PHP als Beispiel heran: wenn man in der Zeile über einer Funktion /** eingibt und Enter drückt, werden diese Art von Kommentaren automatisch erstellt. Das einzige was man hier noch selbst schreibt ist ggf. ein kurzer Satz was die Funktion tut und wenn man Lust hat und die Funktionsparameter scheiße benannt sind kann man dort auch noch ein paar Worte hinzufügen.

    Dokumentation
    Ne Dokumentation ist im Grunde ein Leitfaden für "Benutzer", damit meine ich nicht Benutzer als Endanwender sondern andere Menschen die deinen Code benutzen wollen. Eine Dokumentation würde ich beispielsweise für APIs, nutzbare Klassen oder Libraries erwarten, bei der ich am Code selbst (fast) nichts ändere sondern die gegebene Funktionalität anwenden möchte - wie instanziiere ich ein Objekt, welche Initialwerte, Konfigurationen und Funktionen sind verfügbar um das Ergebnis an meine Bedürfnisse anzupassen und so weiter. Hier ein Beispiel: github.com/mikehaertl/phpwkhtmltopdf Eine Dokumentation (in dem Fall noch recht überschaubar) kann natürlich auch riesig sein (wie z.B. hier).


    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Link“ ()

    @ErfinderDesRades: ich hab den Code am Handy geschrieben, deshalb fehlt da die geschweifte Klammer für die Funktion, aber wie gesagt dasselbe gibts auch für C#

    C#-Quellcode

    1. unsafe void parseHeader(char* header)
    2. {
    3. var head = (ulong*)header;
    4. var lowercaseMask = (0x20ul << 56 | 0x20ul << 48 | 0x20ul << 40 | ...);//Mask containing the lowercase bits for 8 chars
    5. head &= ~lowercaseMask;//convert first 8 chars to upper case
    6. if (head == 0x52454645524552ul)//compare to referer

    Und wie siehts aus. Also für jemand der mit Pointern gut klar kommt ist das gar nicht so schwer, für alle anderen wäre Kommentare geschickt und selbst für Leute die super mit Pointern klar kommen wäre etwas Information geschickt. Und gut lesbarer Code ist mitnichten das wichtigste Code Kriterium. Einen ähnlichen Code wirst du bei allen HTTP Servern finden, die im Produktiveinsatz sind. Denn da geht es dann halt nunmal um performanz und das bringt wahnsinnig viel. Auf 64Bit nen long zu vergleichen ist halt nunmal sehr viel schneller als 8 Bytes zu vergleichen. Bei C++ kann man das ja sogar noch mit Vektorisierung lösen, in C# aber nicht.
    Hey in C++ kann man sogar mit Templates und Metaprogramming die ersten 8 zeichen eines strings automatisiert zur compile time in einen long umwandeln.
    Das war außerdem hauptsächlich darauf bezogen:

    Hobbl schrieb:

    Ich glaub, gut geschriebener Code, ist selbsterklärend.
    Bei Einmannprojekte glaub ich erst recht.

    Nur weil Ihr keine Projekte habt, die bissl mehr verlangen als Daten verarbeiten und darstellen mit aller Zeit der Welt gilt das noch lange nicht für alle anderen, auch nicht bei Hobbyprojekten. Denn ganz ehrlich solche Projekte langweilen mich einfach nur.

    Edit:

    ErfinderDesRades schrieb:

    Was hälst du von dem hier?

    Hammer geil ich erfahre ja ohne Ausprobieren was für Exceptions fliegen können.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jvbsl“ ()

    jvbsl schrieb:

    Und wie siehts aus.

    C#-Quellcode

    1. unsafe void parseHeader(char* header) {
    2. var head = (ulong*)header;
    3. var lowercaseMask = (0x32ul << 56 | 0x32ul << 48 | 0x32ul << 40 | ...);//Mask containing the lowercase bits for 8 chars
    4. head &= ~lowercaseMask;//convert first 8 chars to lower case
    5. if (head == 0x52454645524552ul) { //compare to referer
    6. //...
    7. }
    8. }
    Schlecht siehts aus. ;(
    Weniger wegen der Pointer, eher wegen der Bit-Logik. Aber dasses jetz 0x32ul ist und nicht 0x32 hilft mir schon viel - da sehe ich, dasses um long geht, und mag sein, die kann man um 56 nach links shiften.
    Aber wie gesagt: Bit-Logik - dass und inwiefern das eine lowerCase-Mask für chars ergibt war und ist mir noch nicht klar.
    also insbesondere

    C#-Quellcode

    1. head &= ~lowercaseMask;//convert first 8 chars to lower case
    ist echt a Denk-Stoff für mich - also ich weiß, dass die Großbuchstaben bei 65 anfangen, und die Kleinbuchstaben bei 97, aber warum ein einzelnes Bit umzudrehen aus Großbuchstaben Kleinbuchstaben macht - dieser Zusammenhang war/ist mir noch nicht so klar.
    Das täte ich für super-tricky halten, und einer Kommentation durchaus für würdig.

    Aber ist der komment ühaupt sachlich richtig?
    Wenn ich den Code recht verstehe - wird das Bit nicht umgeschaltet?
    Also dann würde ja aus einem Großbuchstaben ein kleiner, aber ebenso auch aus einem Kleinbuchstaben ein großer? Der Comment spricht aber nur von Konvertierung in Kleinbuchstaben - und täte damit lügen - Commentations absolutely worst case.

    Achje - 0x32 - das ist ja garnet 1 Bit, das sind ja mehrere - und ich weiß nichtmal welche - so bewandert im hexadezimalsystem binnich nu auch wieder nicht.
    0x20ul wäre wohl ein Bit - bzw. 32ul - ich hoffe, du servierst uns korrekten Code - odr?
    Sonst wäre ja zwangsläufig, dass niemand nix versteht.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Windows-Rechner (calc.exe)
    Programmierer-Ansicht
    Du gibst die Zahl in Dezimal ein und schaltest um auf binär

    Edit:
    Oder hier
    blog.nerdmind.de/page/ascii-tabelle/
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    vielen Dank - nu sehe ich:

    Quellcode

    1. A = 65 = 1000001
    2. a = 97 = 1100001

    Und dann ist mir klar, wenn man 32 - das 6.Bit von rechts umschaltet, dass dann aus A a wird, aber auch annersrum!
    Womit auch gezeigt wäre, wie schwierig richtige Kommentation ist, weil wie gesagt - wie's aussieht: Der gezeigte Kommentar lügt!
    Und der gezeigte Code scheint eh so nicht zu funktionieren - 0x32 != 32 also derlei Betrachtungen haben nur sinn, wenn man realen Code betrachtet - nicht am Handy aus dem Gedächtnis zusammengestoppelten.
    Ich will jvbsl nicht anpissen, sondern es zeigt es wirklich, wie schwierig das ist, und wie peinlich genau man mit dem Kram umgehen muss.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Du hast recht ich hab den falschen Code serviert 0x20 sollte es eigt. sein :D

    Man solle es mir nachsehen, nachdem ich das erste am Handy zusammen getippt hab und das zweite dann einfach nur kopiert hab :D

    Edit: Außerdem verwend ich ja kein Xor, also wird da nicht hin und her geschalten, sondern da wird mit der umgekehrten Maske verundet. Somit fällt das bit weg
    Kommentar auch verkackt. Aber da merkt man auch gleich warum man kommentare braucht :D
    0x32 = 0100000
    ~0x32=1011111

    ->
    a = 1100001
    A = a & ~0x32
    A = 1100001 & 1011111
    A = 1000001
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jvbsl“ ()

    hoho - rofl!
    jo - ich hab Xor-^ mit And-& verwechselt. Dann wäre der Komment ja richtig: Aus A wird a, aber aus a wird nicht A
    Achnee - doch falscher Comment (nur anners falsch als ich dachte): Aus a wird A, also eine Konversion in Großbuchstaben.
    Dann ist der Comment falsch und vor allem auch der Variablen-Name: lowercaseMask
    Jo - eiglich guter Code, aber quasi katastrophal obfusciert ;)
    Also mein stand wäre nu:

    C#-Quellcode

    1. unsafe void parseHeader(char* header) {
    2. var head = *((ulong*)header);
    3. var uppercaseMask = ~(32ul << 56 | 32ul << 48 | 32ul << 40 | ...);//8-byte-Mask, only let pass uppercase-chars
    4. head &= uppercaseMask;//convert first 8 chars to upper case
    5. //...
    6. }
    Aber mit #2 binnich auch unsicher - ich bin ja auch kein c#-ler, und Pointerer schoma garnet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    nunja lowercaseMask passt schon, denn da ist es ja noch nicht negiert.
    Und obfuskiert ist es nicht durch schlechte Benennung oder sonst was. Braucht halt einfach Kommentare. Und wie gesagt solchen Code hab ich tatsächlich immer mal wieder.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    @jvbsl: (sieh auch mein edit)
    Und solch zu kommentieren ist extrem schwierig, und extrem wichtig.
    Auch meine Kommentation ist immer noch Quatsch, denn erwähnens-wichtig ist auch, dass die Maske nämlich keine 8 Chars behandelt, sondern 1 uLong. Das ist ein feiner Unterschied, und gleichzeitig grad der Trick an der Sache.
    Allerdings fürchte ich grad, es trifft nicht 8 chars, sondern nur 4 - schließlich ist ein char heutzutage nichtmehr 8 bit breit, sondern 16.
    Klingt jetzt alles wie KorintenKackerei, aber wie erwähnt in 10 Jahren kostet einen so'n Sch... einen ganzen Arbeitstag und mehr.



    hihi - ich glaub, ich täte lieber von diesem Unsafe-Kram abraten, und good old String.ToUpper empfehlen - da weiss man, was man hat. :P

    Jo, wenn ichs recht überlege:

    C#-Quellcode

    1. void parseHeader(string header) {
    2. if (header.Substring(0,4).ToUpper == "ASDF") {
    3. //...
    4. }
    5. }
    Mehr muss der Frosch nicht kosten :D .
    Mag 50-fach langsamer sein, aber nicht die Hälfte Code (wenig code - mein Steckenpferd), Kommentar erübrigt sich, man schiesst sich nicht ins Knie mittm Irrtum bei der Anzahl der üprüften chars, kein Risiko von wegen Array-Grenz-überschreitung, les- und wart-bar auch für Anfänger.
    3 rules of optimization - mein alter jvbsl - Zankapfel

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hast auch wieder recht meine güte, blödes C# :D
    Aber eigt. ging es mir mit dem Code sowieso nur darum meinen Punkt rüber zu bringen.
    Man würde dann halt einfach auf einem ANSI string arbeiten und mit byte ptr, denn das halbiert die anzahl an vergleichen ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---