Stilfrage: C als Präfix für Klassen



  • Original erstellt von Kauz01:
    **Da erinnere ich mich doch daran, dass ich mit dir und Shade gestritten habe, ob es Fällen geben könnte in welchen es sinnvoll sein [b|könnte[/b]

    0 == i
    

    statt

    i == 0
    

    zu schreiben. Das wurde aber von dir (und Shade) generell abgelehnt.
    **

    das ist etwas anderes.
    es gibt generalisierungen die immer stimmen.
    zB:
    im Krieg sterben Menschen
    und
    0==i
    gegen
    i==0
    da ist 0==i semantisch falsch.
    denn das heisst ja, wenn 0 gleich i ist
    es interessiert mich aber nicht was 0 ist, sondern was i ist.

    aber darum geht es jetzt nicht



  • @Shade

    *ggg*



  • @Shade

    Wir haben in einem früheren C-Projekt so programmiert und hatten einen guten Grund dafür. Der ist aber sicher generell ungültig. 😃

    [edit]

    denn das heisst ja, wenn 0 gleich i ist

    Die Aussage "0 gleich i" ist äquivalent zu der Aussage "i gleich 0". Das stimmt generell.
    [/edit]

    [ Dieser Beitrag wurde am 21.03.2003 um 09:26 Uhr von Kauz01 editiert. ]



  • Original erstellt von Kauz01:
    Wir haben in einem früheren C-Projekt so programmiert und hatten einen guten Grund dafür. Der ist aber sicher generell ungültig. 😃

    OK, du meinst alte Compiler die bei einem if(i=0) nicht warnen? Zugegeben, dass ist n Problem - aber heutzutage irrelevant 🙂 (zum Glück)



  • @shade

    Der Warning-Level wurde reduziert. Das hatte auch einen Grund (keine Altlast), aber das führt hier zu weit.



  • Original erstellt von DocJunioR:
    Habt ihr mal in ner größeren firma programmiert? Da sind die Variablennamen sogar nach Datentypen, Nutzung und Länge bezeichnet und meine 'Firma' besteht nicht nur aus 10 Leuten.

    Das war einmal. Ist als historisch anzusehen.

    iwr haben dutzende Projekte am Laufen und überall ist der Code standardisiert.

    Stamdardisierung ja. Aber doch nicht mit nutzlosen Buchstaben. Sonst passiert nur, daß man den Zeiger lpachb nennt, statt begin (long pointer to array of character named begin). Der name soll verraten, WELCHE BEDEUTUNG die Variable hat, nicht welchen TYP.

    Der einzige Grund, warum man sowas überhaupt macht, ist die Wartbarkeit. Wäre dies nicht nötig, würden wir noch regelmäßig jumps/gotos machen.

    Und hier sag ist einfach, daß die Wartbarkeit dadurch nicht erhöht wird. Und mit gotos hat das überhaupt nix zu tun.



  • @DocJunioR ich hab schonmal Code von dir gesehen und ich finde ihn sehr sehr unübersichtlich. Du programmierst auch eher so'n C und C++ mischmasch. 😡 🙄



  • Hi, bei der Erfindung von C++ hat man sich ne Menge Mühe gegeben daß eigene Datentypen(Klassen) so gemacht werden können, daß man sie nicht mehr von eingebauten Datentypen unterscheiden kann (Operatoren überladen...verkette Zuweisung von Variablen etc...)...warum sollte man bei der Benneung eines Typs jezt unbedingt sagen.."Vorsicht das is ne Klasse". Ich glaub net daß das im Sinn der Erfinder gewesen wäre. Und sieht noch scheiße aus..ich hasse Prefixe.



  • also das 50 leute in firma xyz das auch so machen ist kein stichhaltiges argument.
    die leute haben nicht die zeit sich mit solchen fragen zu bescheftigen, außerdem gild ja oft "never change a running system" d.h. in der steinzeit der programmierung werden irgend welche regel festgelegt und gelten noch bis heute 😞



  • zu dem i==0 vs 0==i:
    Ich versuche "ziemlich generell" die zu untersuchende variable allein auf eine seute zu stellen.
    also
    if(i==0)
    und vor allem
    if(abhebungsbetrag<kontoStand+kreditRahmen)
    statt
    if(abhebungsbetrag-kontoStand<kreditRahmen)
    oder so.

    ausnahme ist immer
    while(x>=min && x<=max)
    das schreib ich lieber als
    while(min<=x && x<=max)

    denkar wären auch sachen der art
    if( f(x) == f(y) )
    wobei f ein kleiner ausdruck ist, hier fällt mir nur kein sinnvolles beispiel ein. nur gemeine wie
    if(x/10==y/10)//x und y sind int
    ,was ich gar nicht versuchen mag. nach x aufzulösen.



  • @Volkard

    Der name soll verraten, WELCHE BEDEUTUNG die Variable hat, nicht welchen TYP.

    Grundsätzlich mal richtig. In der Praxis bin ich aber ganz froh, wenn ich der Variable ansehe, ob ein (eigentlich nummerischer) Schlüssel an dieser Stelle als long oder als string abgelegt ist.
    Wir können jetzt natürlich Diskussionen führen, ob so was generell nicht vorkommen sollte. Mit Generalisierungen ist das aber so eine Sache :).



  • Original erstellt von Kauz01:
    Grundsätzlich mal richtig. In der Praxis bin ich aber ganz froh, wenn ich der Variable ansehe, ob ein (eigentlich nummerischer) Schlüssel an dieser Stelle als long oder als string abgelegt ist.

    ok, es gibt fälle...
    nubes schreiben gerne vor jeden zeiger ein p. vorteil: man sieht den fehler von if(pa==pb) wo ein if(*pa==*pb) gemeint war. mir isses auch schon vorgekommen, daß ich alte C-funktionen las (das sind die verkorksten apparate über mehrere bildschirmseiten), und auf seite 3 nicht mehr wissen konnte, was nu f war.
    ob der schlüssel nu numerisch ist, ob da ne zahl oder ein string verwendet werden darf. ich weiß nicht, evtl läßt sich hier mit der recht strengen typprüfung was rausfischen. (wenn man ne mißratene API hat, die einem void* vollschreibt und typprüfung gar nicht andeutungsweise mag, sollte man auch mißratenen code damit bauen, sonst paßts gar nicht.)
    aber vor allem: heute, wo funktionen 2 oder 3 und die dicken funktionen 6 zeilen haben oder trivial sind, kann man erwarten, daß die regeln zum guten programmieren sich leicht geändert haben zu damals.
    (ich erinnere mich mit schaudern an klassen, die 30 attribute hatten! jo, da hab ich bezeichner mit n am anfang geliebt. kann aber sein, daß es vor allem daran lag, daß ich nicht 30 maximal 6-buchstabige bezeichner auseinanderhalten konnte.)

    [/QUOTE]Wir können jetzt natürlich Diskussionen führen, ob so was generell nicht vorkommen sollte. Mit Generalisierungen ist das aber so eine Sache :).[/QUOTE]
    genau, die sind nämlich alle falsch.



  • Nachdem wir erst letztens ausführlichst über die Präfixe diskutiert haben, wollt ich nix mehr zu schreiben.
    Ich bin wie Volkard der Meinung, dass der Name der Variable die Bedeutung verraten soll. Im Gegensatz zu Volkard bin ich aber durchaus geneigt, neben der Bedeutung auch noch die Zusatzinformationen über den Typ mit in den Namen zu nehmen. Das schadet nicht und wenn es mir nur einmal erspart, das Tippen zu unterbrechen, weil ich erst im Header nachgucken muss, was das für ein Typ ist, bin ich schon glücklich drüber.

    Aber warum ich jetzt eigentlich hier Poste:

    Da erinnere ich mich doch daran, dass ich mit dir und Shade gestritten habe, ob es Fällen geben könnte in welchen es sinnvoll sein [b|könnte[/b]

    0 == i
    statt

    i == 0
    zu schreiben. Das wurde aber von dir (und Shade) generell abgelehnt.

    Dass das ein semantischer Unterschied sein sollte ist Quatsch imho. "Gleich" ist eine mathematisch-logisch definiert und da isses egal, wie rum das ist. Dass man bei ner Gleichung die Seiten tauschen kann wisst Ihr alle.
    Dabei gibts aber in C/C++ ein imho schlagendes Argument 0 == i zu verwenden:

    if( i = 0) //upsala
    {
    }

    Da kommt, wenn ich Glück hab ne Warnung, die nicht zischen X anderen Warnungen untergeht, die mir der Compiler wegen irgendwelchen Bibliotheken, die ich verwende bringt (für die kann ich nix).

    if( 0 = i) hingegen macht nen Compilerfehler.

    Ich versuche "ziemlich generell" die zu untersuchende variable allein auf eine seute zu stellen.

    Versuch ich auch. Nur eben andersrum und wenn eines von beiden const ist, dann kommt das nach links. Einfach aufgrund eines Unschönheit in der Syntax von C.



  • Ich verwende ebenfalls Präfixe für var, member und class - also:

    class CWhatever
    {   int m_iVar;
        // ...
    }; // class CWhatever
    

    Macht das Lesen des Codes einfacher - einmal angewöhnt einfach nur praktisch. Man weiss immer wen man eine Variable verwendet, welchen Typs sie ist.

    my 0.02€



  • ach diese diskussion ist herrlich.

    man könnte auch malern zuhören, die sich darüber streiten, ob man nun pinsel oder kelle, oder rot oder grün, öl oder aquarell verwenden soll 🙂

    Ich seh das so: Der Programmierer ist der Künstler, der Quelldatei seine leinwand.
    Wenn man sich nur ein schönes Bild malen will, ist es reichlich wurscht, welche technik man benutzt. Da kann auch kartoffeldruck schon tolle ergebnisse bringen.

    Wenn man aber bilder für auftraggeber machen will, die unbedingt gerade kanten in ihrem bild haben wollen, dann muss man wohl oder übel mal ein lineal benutzen.

    😃 😃 😃

    grüsse



  • Hallo,
    lustig. Einige von euch tun so, als ob Präfix == Professionell und alles andere gleich Hobby wäre. Dazu noch so gönnerhaft nach dem Motto: "Ach naja, solange man nur Spielzeugprogrammierung macht, ist das alles egal. Wenn ihr dann aber mal groß seit und professionell in einer so tollen Firma programmiert wie ich, dann werdet ihr einsehen, dass mein Weg der einzig logische ist." So argumentieren meine Großeltern auch immer. Wenn ihnen nichts mehr einfällt, kommt einfach ein: "Naja, in deinem Alter kannst du das noch nicht verstehen."

    Ihr vergesst dabei aber ein wenig, dass die Sutters, Meyers', Volkards, Martins, Alexandrescus... dieser Welt ebenfalls professionell programmieren. Die Argumente gegen Präfixe kommen also nicht von irgendwelchen Sandkasten-Fetischisten.

    Also von mir aus kann jeder programmieren wie er will. Auf dem Kopf stehend, unterm Tisch liegend, mit 17 Seiten Präfix vor jeder Variablen oder ganz ohne Variablen. Nur in dem Moment wo er behauptet, seine Methode wäre die Richtige bevorzuge ich echte Argumente statt Scheinwahrheiten wie "in der professionellen Programmierung macht man das so", "OOP Code ist wiederverwendbar" und "Java ist langsam".



  • Original erstellt von <prokker>:
    @DocJunioR ich hab schonmal Code von dir gesehen und ich finde ihn sehr sehr unübersichtlich. Du programmierst auch eher so'n C und C++ mischmasch. 😡 🙄

    Und ich hab schonmal gesagt, solch Kommentar nur mit Anmeldung. Ich kann Leute nicht ausstehen, die nicht offiziell zu ihrer Meinung stehen!

    Dass ich objektorientiertes C programmiere weiß ich. Bin halt ein C-Umsteiger und seh's nicht ein, dinge fallen zu lassen, die gut sind, nur damit ich in einen ISO reingequetscht werden kann.
    Im Übrigen bin ich Individualist. Ich mache immer alles so, wie's mir gefällt *fg*



  • Original erstellt von Dimah:
    also das 50 leute in firma xyz das auch so machen ist kein stichhaltiges argument.
    die leute haben nicht die zeit sich mit solchen fragen zu bescheftigen, außerdem gild ja oft "never change a running system" d.h. in der steinzeit der programmierung werden irgend welche regel festgelegt und gelten noch bis heute 😞

    Naja, Steinzeit. Es wird seit letztem Jahr offiziell C programmiert und dementsprechend sind die Richtlinien relativ neu.
    So nebenbei: Was vor 15 Jahren sinnvoll war, muss doch jetzt nicht plötzlich sinnlos sein, oder?

    Naja, ich habe hier jetzt wenigstens 4 Leute gelesen, die einen Präfix benutzen. Abschließend sag ich nur noch einmal:
    Man sollte sich Gedanken über Namenskonventionen machen! Wenn man dann zum Schluß kommt, dass man keine braucht, okay. Man hat sich wenigstens damit beschäftigt.

    So, ich werde mich aktiv aus diesem Thread zurückziehen, lediglich mal schauen, was es neues gibt. Ich bin hier, um meine Sicht zu erklären, und nicht, um mich mit euch zu streiten. Das wäre dann nämlich eine sinnlose Sache, die nur Antipathien erzeugt - muss ja net sein 😉

    cYa
    DjR



  • Man sollte sich Gedanken über Namenskonventionen machen! Wenn man dann zum Schluß kommt, dass man keine braucht, okay.

    Wieder so ein eigenartiger Satz. Wer behauptet, dass nicht-Präfix-Nutzer keine Namenskonventionen haben/brauchen? Namen sind ein fundamentaler Bestandteil der Programmierung. Man sollte sehr viel Gehirnschmalz in die Benennung von Objekten und Konzepten stecken. Das gilt für Präfix-Anhänger genauso wie für alle anderen Programmierer auch. Ich habe noch nie ein Projekt ohne Namenskonventionen gesehen, aber schon viele bei denen in eben diesen der Gebrauch von Präfixen missbilligt wurde.

    Um es noch mal klar zu sagen. Nur weil man auf den Einsatz von Präfixen verzichtet, heißt das nicht, dass man Humpty-Dumpty-Namen verwendet.



  • muss mich doch nochmal melden.
    Oracle hat beispielsweise Konventionen für PL/SQL-Programme eingerichtet. (die Beispiele und von Oracle entwickelten Scripte benutzen dies grundsätzlich)
    Hier bekommen Parameter den Präfix p_ und andere variablen v_. Cursors bekommen ein c_

    Dies sind übrigens Namenskonventionen. Okay, ich habe mich insofern falsch ausgedrückt, als dass ich natürlich Prafixe meine. Aber weiter sich darüber zu streiten, find ich sinnlos. Es wird eh immer so viele Meinungen geben, wie Programmierer.

    cYa
    DjR


Anmelden zum Antworten