Ergebnis 1 bis 20 von 385

Thema: IM IN YR LOOP\n VISIBLE FOO\n IM OUTTA YR LOOP - Der Programmierer-Spamthread #2

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ich denke auch nicht, dass das jetzt was mit "Vergötterung" zu tun hat. Ich denke, bei Bill Gates und Linus Torvalds würden die Leute ähnlich reagieren. Die drei sind einfach die großen Gesichter der Branche, ohne die vieles, was wir heute für selbstverständlich halten, nicht in dieser Form existieren würde.

    Edit:
    Zitat Zitat von niR-kun Beitrag anzeigen
    Ich hatte gestern mit TWS einen Disput über Variablenbenennung, er bevorzugt es in Java Variablen so zu nennen wie "a_cool_variable", aber Funktionen mit camelCase zu benennen wie "aCoolFunction()". Ich meinte zu ihm, dass es syntakisch viel besser aussehen würde, wenn beides im camelCase-Syntax wäre.

    Was ist denn nun mehr verbreitet (oder besser)?

    Im Sinne einer Kooperation muss man ja syntaktisch irgendwie übereinkommen.
    Ich bevorzuge es, mich jeweils an die Konvention der Standardbibliothek der entsprechenden Sprache zu halten. Grade bei Java gibt es von Sun einen sehr ausführlichen Style Guide.

    Geändert von DFYX (09.10.2011 um 13:56 Uhr)

  2. #2
    Ihr solltet euch bei euren Konventionen nicht zu sehr verkrampfen. Wichtig ist nur, dass der Code einheitlich aussieht.

  3. #3
    Zitat Zitat von Kyuu Beitrag anzeigen
    Ihr solltet euch bei euren Konventionen nicht zu sehr verkrampfen. Wichtig ist nur, dass der Code einheitlich aussieht.
    Das ist ja genau das Problem. Es wirkt für mich mit der Unterstrich-Konvention uneinheitlich und ist für mich schwer lesbar, weil ich mich an die unter Java typischen Namens-Konvention halte.
    Aber auf Hinblick das nicht nur TWS und ich den Code lesen werden sondern auch andere.

  4. #4
    Was Kyuu sagt reicht doch schon. Nur weil einer sagt: "Hey, ich brin Prof uns sage euch dass das so am Besten ist!" muss man sich nicht daran halten. Ich kenne auch Leute die fahren eine komplett andere Schiene mit sogenanntem CleanCode bei dem z.B. Methoden endlose Namen haben die genau beschreibt was alles in der Methode passiert und Methoden gleich ganz zerstückelt. Das ist jedem selbst überlassen.
    Selbst bei Teamarbeit ist das nicht soooo wichtig, es sei denn man arbeitet zu zweit an einer Klasse. Dann sollte man sich vllt vorher auf einen Mittelweg einigen

  5. #5
    Zitat Zitat von DFYX Beitrag anzeigen
    Ich bevorzuge es, mich jeweils an die Konvention der Standardbibliothek der entsprechenden Sprache zu halten. Grade bei Java gibt es von Sun einen sehr ausführlichen Style Guide.
    Ja. Allein schon, weil einige Sachen auch nicht gut übertragbar sind. Nehmen wir mal als Extrembeispiel Objective-C: Da hat man Aufrufe, die in etwa so aussehen:
    Code (Obj-C):
     
    [GrowlApplicationBridge notifyWithTitle:@"Bei Artikel überboten"
    							description:title
    					   notificationName:@"Outbid"
    							   iconData:nil
    							   priority:1
    							   isSticky:NO
    						   clickContext:articleID];
     

    Das ist sehr deskriptiv, aber nur deshalb lesbar, weil a) Name und Variablen vermengt sind und b) XCode in der Lage ist, das automatisch sinnvoll einzurücken. Daß man mehrere Zeilen für einen Aufruf hat, ist bei längeren Aufrufen absolut nicht ungewöhnlich.

    Aber was, wenn wir solche Namen in C++ benutzen wollen?
    Code (C++):
     
    GrowlApplicationBridge.notifyWithTitleDescriptionNameIconPriorityStickyContext("Bei Artikel überboten", title, "Outbid", null, 1, false, articleID);
     

    Funktioniert gar nicht. Wir haben zwar drin, was die Variablen bedeuten, aber der Funktionsaufruf ist enorm lang und man müßte ohnehin abzählen, welches Wort zu welcher Variable gehört. Das sollte uns doch eher die IDE erklären und nicht der Variablenname. Für sowas gibt es Doxygen und Konsorten und jede IDE, die den Namen verdient, wird einem genau sagen können, welche Variable was ist.


    Ich muß aber zugeben, daß ich mich bei einer Sprache absolut nicht daran halte, wie die Funktionen standardmäßig heißen: PHP. In PHP ist camelCase typisch für objektorientierten PHP-Code, während Unterstriche in der Regel in prozeduralen Funktionen zu finden sind. Da ich aber meine Codebase konsistent formatiert haben will, nehme ich überall camelCase.


    Zitat Zitat von niR-kun Beitrag anzeigen
    Das ist ja genau das Problem. Es wirkt für mich mit der Unterstrich-Konvention uneinheitlich und ist für mich schwer lesbar, weil ich mich an die unter Java typischen Namens-Konvention halte.
    Aber auf Hinblick das nicht nur TWS und ich den Code lesen werden sondern auch andere.
    "Einheitlich" bedeutet nicht, daß der Stil gleichförmig aussieht; es bedeutet, daß die Codebase einheitlich ist. Eine Variable sollte in Quelldatei A den selben Formatierungsregeln folgen wie in Quelldatei B und C. Denn man WIRD früher oder später mit jemand anderes Code arbeiten müssen und dann ist es einfacher, wenn man sich nicht erst in die Konvention einarbeiten muß.

    Solchen Spaß habe ich auf der Arbeit. Ein von meinem Vorgänger geschriebenes Modul hat Datenklassen, die zusammen mit den Werten noch Metadaten für den (schlechten) Formulargenerator mitbringen. Das macht das Befüllen umständlich:
    Code (PHP):
     
    $customer = new Customer();
     
    // falsch
    $customer->FirstName = "Walter";
     
    // so wie der Code vom Vorgänger es macht
    $customer->FirstName->Value = "Walter";
     
    // so, wie es korrekt wäre
    $customer->FirstName = new stdClass();
    $customer->FirstName->Value = "Walter";
     
    // Es geht auch ohne das explizite Instanzieren von FirstName, aber dann warnt
    // PHP, weil ein Objekt implizit erzeugt wurde. Das ist idR. kein Problem, aber
    // wir haben einen eigenen Fehlerhandler, der jedes Mal aufgerufen wird. Bei
    // 1.500 Warnungen beim Erstellen der Kundenliste macht das ein fieses
    // Performanceloch aus.
     

    Wenn ich jetzt also mit Daten aus seinem System arbeite, muß ich daran denken, daß a) camelCase herrscht, aber Unterwerte von Objekten mit PascalCase geschrieben werden und b) Werte Objekte sind, die eine Variable für den eigentlichen Wert beinhalte. Freude.

    (Ja, ich weiß, das könnte man mit magischen Gettern und Settern lösen, aber meine erste Handlung als Entwickler war, den Code meines Vorgängers komplett zu deprecaten. Irgendwann wird der ganze Ramsch komplett ersetzt und bis dahin halte ich mich mit strukturellen Änderungen zurück.)

  6. #6

  7. #7
    Strangest language feature

    Zitat Zitat von Dipstick
    In JavaScript:
    '5' + 3 gives '53'
    Whereas
    '5' - 3 gives 2
    Zitat Zitat
    JavaScript truth table:

    Code:
    ''        ==   '0'           //false
    0         ==   ''            //true
    0         ==   '0'           //true
    false     ==   'false'       //false
    false     ==   '0'           //true
    false     ==   undefined     //false
    false     ==   null          //false
    null      ==   undefined     //true
    " \t\r\n" ==   0             //true
    Die Beispiele für C und Java sind aber auch nicht schlecht.

  8. #8
    Immerhin nicht Dart. Da ist 1 == false. In der aktuellen Version von Dart ist alles false bis auf das Boole'sche true.

    Wenigstens ist ein Bug dazu offen; in Zukunft soll wohl alles true sein, das nicht null oder das Boole'sche false ist. Natürlich bedeutet das dann 0 == true.

  9. #9
    Perl:
    Zitat Zitat
    $[ — change your array base from 0-based to 1-based to 42-based: WHEEE!
    ... bitte, nicht wirklich....

  10. #10
    Ich kopiere jetzt mal schamlos von fefe:

    Zitat Zitat
    Standard des Tages: Das "Extensible Configuration Checklist Description Format". Ja, Checklisten. As in
    [ ] Müll rausgebracht
    [ ] Geschirr abgewaschen
    Man bemerke: das Dokument hat 80 Seiten.

  11. #11

    Geändert von Whiz-zarD (28.10.2011 um 20:39 Uhr)

  12. #12
    Der Artikel ist ziemlicher Blödsinn. Diese Limits gibt es jetzt schon, zumindest für die API ohne Mapanzeige, also zum Beispiel für Koordinaten-Lookups. Bei dem Limit für die Maps gehe ich auch mal davon aus, dass das pro User und nicht pro Website ist. So gesehen ändert sich nicht viel. Bisher war es eben so, dass die Anfragen dann abgelehnt wurden, jetzt hat man die Möglichkeit, gegen Geld mehr zu bekommen.

  13. #13
    Eigentlich hätt ich ja geglaubt, dass die shared_ptr eine syntaktisch hässliche aber trotzdem bessere alternative zu normalen pointern sind. Wegen so sachen wie enable_shared_from_this und anderem zeug wächst allerdings grad wieder mein wunsch, dass c++ doch endlich sterben möge.

    Geändert von nudelsalat (06.11.2011 um 17:12 Uhr)

  14. #14
    Gerade auf http://blog.fefe.de/?ts=b1fa9d42 gefunden:
    Eine erfolgreiche Kaputtoptimierung - so sollte man es nicht machen.

  15. #15
    ok, das ist echt schon nett O_o
    Aber einen XML-Parser kann einen manchmal echt zur Weißglut bringen. Neulich hatte ich nen RSS Feed-Parser unter Java gebastelt.
    Es ist nervig, dass hier die Daten nicht Elementar sind. Der <author>-Tag besitzt sowohl die E-Mail Adresse, als auch den Namen des Verfassers. Konnte man da nicht einfach zwei Tags draus machen? Stattdessen wird hier der <creator>-Tag aus dem "Dublin Core Metadata Element Set" verwendet, welcher noch eingebunden werden muss ...

    Aus diesem Grund habe ich der Webentwicklung so weit es geht den Rücken zugekehrt. Ständig stößt man dort nur auf irgendwelche Flickenteppiche, die dann gesondert behandelt werden müssen.

  16. #16
    Zitat Zitat
    Bill Gates ist der Teufel, denn korrekt heißt er William Henry Gates III. Wandelt man die Buchstaben seines Namens in ASCII- Werte um, erhält man folgendes: B 66 - I 73 - L 76 - L 76 - G 71 - A 65 - T 84 - E 69 - S 83 + 3 = 666. Die 666 ist die Ziffer und das Zeichen des Teufels.
    Quelle.

  17. #17
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    ok, das ist echt schon nett O_o
    Aber einen XML-Parser kann einen manchmal echt zur Weißglut bringen. Neulich hatte ich nen RSS Feed-Parser unter Java gebastelt.
    Es ist nervig, dass hier die Daten nicht Elementar sind. Der <author>-Tag besitzt sowohl die E-Mail Adresse, als auch den Namen des Verfassers. Konnte man da nicht einfach zwei Tags draus machen? Stattdessen wird hier der <creator>-Tag aus dem "Dublin Core Metadata Element Set" verwendet, welcher noch eingebunden werden muss ...

    Aus diesem Grund habe ich der Webentwicklung so weit es geht den Rücken zugekehrt. Ständig stößt man dort nur auf irgendwelche Flickenteppiche, die dann gesondert behandelt werden müssen.
    Es hilft, wenn man sich von XML fern hält. Es ist schon erstunlich, wie viel sinnvoller auf einmal alles wird.

  18. #18
    Das denke ich auch wobei es sich auch SUPER für Animationen eignet Zumindest kann ich damit viel leichter Animationen laden, Alternative wäre natürlich JSON, aber ich hab nen guten XML-Parser von daher geht das, ich mache ja damit nichts in Echtzeit.

  19. #19
    Aus der gleichen Kategorie, falls ihr es noch nicht kennt:

  20. #20
    Wer es noch nicht kennt: http://www.stophiphop.com/modules/ne...hp?storyid=184

    Leider gibts solche Leute wirklich zu Genüge.
    Ich vermute allerdings auch, dass das ein Fake ist. Witzig ist es aber trotzdem.

    Es ist zwar nicht möglich, eine Systempartition aus laufendem Windtews heraus zu formatieren, allerdings können tatsächlich Dateien gelöscht werden, sogar solche die zu laufenden Programmen gehören (DLLs und EXE-Dateien). Es ist sogar möglich, einfach die komplette Partition auszuhängen (d.h. ihr den Laufwerksbuchstaben C: wegzunehmen), wie einige Leute vom BMT bezeugen können (wo ich das versehentlich gemacht habe - es hat einige Verrenkungen und entsprechend viel Hirn gebraucht die Partition wieder einzuhängen wenn man eigentlich auf keine Dateien mehr zugreifen kann die auf ihr liegen, inklusive "mountvol.exe". Es ist auch ganz witzig wie Windows und laufende Programme sich verhalten wenn man ihnen quasi den Boden unter den Füßen wegzieht...).

    Geändert von Cherry (16.11.2011 um 18:16 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •