Stilfrage: C als Präfix für Klassen
-
Wie gesagt, ich mach's so. wenn ihr mich dafür lynchen wollt, gerne. Zumindest Fritzi kann meinen Code schon auf den ersten Blick lesen
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. iwr haben dutzende Projekte am Laufen und überall ist der Code standardisiert. Wenn ihr's nicht einseht, ist das nicht mein Problem *fg*
Es sieht am Anfang umständlich aus, aber wenn man erstmal dazu kommt, code lesen zu müssen, der schon 10 Jahre alt ist, wird man solche Konventionen lieben. 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.Ich habe immernoch nie nicht niemandem was nahegelegt. ich sagte nie :"volkard, mach das so!" ich hab nur meine Meinung öffentlich geäußert. Okay, dafür wird man in letzter Zeit unter anderem auch gelyncht, abgesägt und ähnliches, aber egal. Meine Meinung kennt ihr, ich mach's so, wenn ihr nicht, isses mir auch egal. Hauptsache, ihr kommt mit klar
cYa
DjR
-
Volkard schrieb:
Alle Generalisierungen sind nämlich falsch.
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.
Meine persönliche Meinung zum eigentlichen Thema dieses Threads:
Bei uns werden Präfixe verwendet und ich bin oft sogar in meinem eigenen Code froh, dass ich auch nach zwei Jahren noch schnell erkennen kann, worum es sich handelt.
Leute mit besserem Gedächtnis (oder kleineren und kürzeren Projekten) als meinem brauchen so was sicher nicht.Wie schon bemerkt: Dies ist meine Meinung und kein Evangelium für irgendwelche Programmierer. Ich bin bisher gut damit gefahren und werde auch weiterhin so programmieren, weil ich für mich Vorteile sehe. Wer anders vielleicht sogar besser zurecht kommt, soll es anders machen.
-
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.
-
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
statti == 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 heuteNaja, 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