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
    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.)

  2. #2

  3. #3
    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.

  4. #4
    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.

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

  6. #6
    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.

  7. #7

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

  8. #8
    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.

  9. #9
    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 18:12 Uhr)

  10. #10
    Zitat Zitat von nudelsalat Beitrag anzeigen
    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.
    Wir haben neulich in IRC eine Ansammlung von den schrecklichsten Jobs erstellt. Cobol-to-java hat gewonnen.

  11. #11
    Zitat Zitat von Mog Beitrag anzeigen
    Wir haben neulich in IRC eine Ansammlung von den schrecklichsten Jobs erstellt. Cobol-to-java hat gewonnen.
    Ein bisschen Respekt, bitte! Cobol to Java Programmierer sind ein wichtiger Teil der Gesellschaft.
    Fehln nur noch Leute die C und C++ durch was besseres ablösen. Javascript oder so.

  12. #12
    Zitat Zitat von nudelsalat Beitrag anzeigen
    Ein bisschen Respekt, bitte! Cobol to Java Programmierer sind ein wichtiger Teil der Gesellschaft.
    Fehln nur noch Leute die C und C++ durch was besseres ablösen. Javascript oder so.
    Fehlt nur noch etwas Besseres, als C und C++. Ich suche schon seit Jahren etwas besseres, mit Gesellschaftscharakter.

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

  14. #14
    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.

  15. #15
    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.

  16. #16
    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.

  17. #17
    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.

  18. #18
    Zum Daten-Austausch bevorzuge ich JSON ...
    Es ist selbst in formatierter Form um die Hälfte kleiner als ein XML-Dokument ... und ist vor allem typisiert. Und wie ich finde häufig auch lesbarer als XML.

    Ein krasses Beispiel was ich die tage gesehen habe ... SOLR (Eine Java-Web-Anwendung zum füttern eines Lucene Such Indexes):

    XML:
    Code:
    <add>
    
    <doc>
      <field name="id">F8V7067-APL-KIT</field>
      <field name="name">Belkin Mobile Power Cord for iPod w/ Dock</field>
      <field name="manu">Belkin</field>
      <field name="cat">electronics</field>
      <field name="cat">connector</field>
      <field name="features">car power adapter, white</field>
      <field name="weight">4</field>
      <field name="price">19.95</field>
      <field name="popularity">1</field>
      <field name="inStock">false</field>
      <!-- Buffalo store -->
      <field name="store">45.17614,-93.87341</field>
      <field name="manufacturedate_dt">2005-08-01T16:30:25Z</field>
    </doc>
    
    <doc>
      <field name="id">IW-02</field>
      <field name="name">iPod &amp; iPod Mini USB 2.0 Cable</field>
      <field name="manu">Belkin</field>
      <field name="cat">electronics</field>
      <field name="cat">connector</field>
      <field name="features">car power adapter for iPod, white</field>
      <field name="weight">2</field>
      <field name="price">11.50</field>
      <field name="popularity">1</field>
      <field name="inStock">false</field>
      <!-- San Francisco store -->
      <field name="store">37.7752,-122.4232</field>
      <field name="manufacturedate_dt">2006-02-14T23:55:59Z</field>
    </doc>
    
    
    </add>
    JSON:
    Code:
    [
      {
        "id" : "978-0641723445",
        "cat" : ["book","hardcover"],
        "name" : "The Lightning Thief",
        "author" : "Rick Riordan",
        "series_t" : "Percy Jackson and the Olympians",
        "sequence_i" : 1,
        "genre_s" : "fantasy",
        "inStock" : true,
        "price" : 12.50,
        "pages_i" : 384
      }
    ,
      {
        "id" : "978-1423103349",
        "cat" : ["book","paperback"],
        "name" : "The Sea of Monsters",
        "author" : "Rick Riordan",
        "series_t" : "Percy Jackson and the Olympians",
        "sequence_i" : 2,
        "genre_s" : "fantasy",
        "inStock" : true,
        "price" : 6.49,
        "pages_i" : 304
      }
    ,
      {
        "id" : "978-1857995879",
        "cat" : ["book","paperback"],
        "name" : "Sophie's World : The Greek Philosophers",
        "author" : "Jostein Gaarder",
        "sequence_i" : 1,
        "genre_s" : "fantasy",
        "inStock" : true,
        "price" : 3.07,
        "pages_i" : 64
      }
    ,
      {
        "id" : "978-1933988177",
        "cat" : ["book","paperback"],
        "name" : "Lucene in Action, Second Edition",
        "author" : "Michael McCandless",
        "sequence_i" : 1,
        "genre_s" : "IT",
        "inStock" : true,
        "price" : 30.50,
        "pages_i" : 475
      }
    ]

  19. #19
    JSON bringt mir aber nichts, wenn ich RSS Feeds von Webseiten auslesen möchte ^^

  20. #20
    Gibt doch genug Bibliotheken, die dir das abnehmen. In Ruby empfehle ich feed_normalizer und für andere Sprachen gibts sicher auch was.

Berechtigungen

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