C++ Gurus
-
net schrieb:
ihr seid komplett durchgeknallt
Nein, wir sind Gurus.
-
Hier gehts irgendwie nur darum dass jeder Recht haben will...
-
Michael E. schrieb:
[..ne Menge Zeug..]
Mein Browser ist grad abgeschmiert und hat meine Antwort mitgerissen.
Ist wahrscheinlich auch besser so.
Ich hab ohnehin keine Lust mehr auf deine rethorischen Spielchen und [edit: so weiter] einzugehen.Wenn ich dich nicht komplett mißverstanden habe sehen wir diese Bezeichnerfrage bei Templates ohnehin relativ ähnlich. Lies es nach oder lass es.
-
OK.
-
Ich finde es lediglich komisch dass wenn ich sage "ein anfaenger sollte lieber ein wort zuviel als zu wenig schreiben" ein IchBinJaSoEinVerdammtLangerBezeichner rauskommt. Unter _einem_ Wort verstehe ich etwas, dass in etwa _einem_ Wort entspricht.
Ich sage, man solle Value schreiben wenn man Value meint und nicht V (denn V kann fuer Vector, Verkorkst, Verdummung, etc. stehen). Ich habe nie gesagt man solle Romane schreiben...
Und ob man jetzt in speziellen Situationen T verwenden soll ist auch eine ganz andere Frage... Ausnahmen wird es immer geben. Und mir geht es hier auch nicht um wegwerf code oder einzeiler, sondern ordentliche Anwendungen - da kann man nicht immer alles herleiten (bzw. koennen schon, aber man will es nicht, weil man dann vor lauter Namen herleiten den Code nicht mehr lesen kann...)
Und da mir bei dem copy Beispiel recht gegeben wurde, sehe ich das als bestaetigung dass wir an einander vorbeigeredet haben.
-
Optimizer schrieb:
Map<KeyType, ValueType> zu haben?
KeyType und ValueType sind Typen, nicht wahr. Warum ist es hier jetzt auf einmal toll das in den Namen reinzuschreiben, aber bei Variablen heißt es UN und ist scheiße?
-
Wenn ich dich nicht komplett mißverstanden habe sehen wir diese Bezeichnerfrage bei Templates ohnehin relativ ähnlich.
*löl*
-
Shade Of Mine schrieb:
Ich finde es lediglich komisch dass wenn ich sage "ein anfaenger sollte lieber ein wort zuviel als zu wenig schreiben" ein IchBinJaSoEinVerdammtLangerBezeichner rauskommt. Unter _einem_ Wort verstehe ich etwas, dass in etwa _einem_ Wort entspricht.
Entweder meinst du "1" Wort im übertragenen Sinne oder ganz exakt. Wenn du's im übertragenen Sinne meinst solltest du es auch dementsprechend klar machen (vor allem jenen gegenüber denen du diesen Tipp gibst). Meinst du es wortwörtlich dann ist ein Wort zuviel ein Wort zuviel.
Shade Of Mine schrieb:
Ich sage, man solle Value schreiben wenn man Value meint und nicht V (denn V kann fuer Vector, Verkorkst, Verdummung, etc. stehen). Ich habe nie gesagt man solle Romane schreiben...
Natürlich, wurde nie bestritten, zumindest nicht von mir, aber wenn du einen Value-of-T[ype]-Template hast, was spricht gegen typename T? Einen Algorithmus dessen Argumente keine inherenten Einschränkungen/Anforderungen aufweisen? Einen Container-of-T?
Bestenfalls bringst du redundante Informationen im Code unter.Shade Of Mine schrieb:
Und da mir bei dem copy Beispiel recht gegeben wurde, sehe ich das als bestaetigung dass wir an einander vorbeigeredet haben.
Scheint fast so.
aussenstehender schrieb:
Wenn ich dich nicht komplett mißverstanden habe sehen wir diese Bezeichnerfrage bei Templates ohnehin relativ ähnlich.
*löl*
Was ist daran so albern?
-
Jester schrieb:
Optimizer schrieb:
Map<KeyType, ValueType> zu haben?
KeyType und ValueType sind Typen, nicht wahr. Warum ist es hier jetzt auf einmal toll das in den Namen reinzuschreiben, aber bei Variablen heißt es UN und ist scheiße?
KeyType und ValueType und sind keine Typen, sie stehen für Typen.
-
Jester schrieb:
Optimizer schrieb:
Map<KeyType, ValueType> zu haben?
KeyType und ValueType sind Typen, nicht wahr. Warum ist es hier jetzt auf einmal toll das in den Namen reinzuschreiben, aber bei Variablen heißt es UN und ist scheiße?
Gut, stimmt schon, gegen Key und Value würd ich jetzt auch nichts sagen. Es sollte sich auch mehr auf den Unterschied zu K und V beziehen.
-
finix schrieb:
Jester schrieb:
...
KeyType und ValueType und sind keine Typen, sie stehen für Typen.
Macht es einen Unterschied? Nein. Trägt dein Kommentar dazu bei, die Diskussion weiterzuführen? Nein. Wieso zum Geier machst du es dann?
-
finix schrieb:
KeyType und ValueType und sind keine Typen, sie stehen für Typen.
das ist unfug.
KeyType und ValueType sind typen.
"KeyType" und "ValueType" stehen für typen.
namen wie "KeyType" werden in der deutschen sprache ausgewertet zum objekt, das sie benamsen. willste den namen selbst benutzen, mußte schon quoten."finix" hat vorne ein 'f'.
finix hat aber vorne eine nase.
-
irgendwie fühlt sich das aber nicht gut an, wenn man nicht Type benutzt
-
selbst hume sikkins benutzt meistens nur einzelne buchstaben für template-parameter
template <class H, class E> struct MemFunInvoker { // restores the type of h and e then dispatches the event to the // appropriate member funtion. static void invoke(const Handler& h, const void* e) { event::CallTraits<H, E>::handle(*static_cast<H*>(const_cast<void*>(h.obj_)), *static_cast<const E*>(e)); } static void invokeConst(const Handler& h, const void* e) { event::CallTraits<H, E>::handleConst(*static_cast<const H*>(h.obj_), *static_cast<const E*>(e)); } }; template <class Fun, class E> struct FunInvoker { static void invoke(const Handler& h, const void* e) { reinterpret_cast<Fun>(h.fun_)(*static_cast<const E*>(e)); } };
-
wtf???? schrieb:
selbst hume sikkins benutzt meistens nur einzelne buchstaben für template-parameter
Und mir sagt H und E hier garnichts.
Aber ich sagte ja: diese kurzen Bezeichner sind so gaengig geworden und das ich genau das nicht verstehe. Ich habe sie ja selber lange genug verwendet
-
@wtf????
Ich habe den Thread nicht verfolgt, aber falls der Topic-Titel programm sein sollte, dann macht es herzlich wenig Sinn Code von mir als Pro- oder Contra-Argument zu verwenden.
Da ich die Voraussetzung nicht erfülle, ist jede Schlussfolgerung uninteressant.Und mir sagt H und E hier garnichts.
Was sicher ein wenig daran liegt, dass der Code aus dem Kontext gerissen ist.
Betrachtet man den Code in dem Kontext in dem er steht, dann erfordert es keinen Doktortitel um zu erkennen, dass H für Handler und E für Event steht. Desweiteren sollte man vielleicht berücksichtigen, dass der Code ein Implementationsdetail aus einem detail-Namespace ist, also nicht für den allgemeinen Gebrauch gedacht ist.Bei öffentlichen Klassen benenne ich normalerweise entweder die Template-Parameter sinnvoll oder aber erzeuge zumindest ein hübsches typedef innerhalb der Definition. Leiger bin ich diesbezüglich oft aber auch etwas nachlässig.
Schlimmer finde ich es allerdings, wenn die Semantik des Templateparmeters nicht beschrieben ist (welche Eigenschaften muss ein konkretes Argument erfüllen).
-
es geht nicht mehr um gurus
-
HumeSikkins schrieb:
Was sicher ein wenig daran liegt, dass der Code aus dem Kontext gerissen ist.
Klar, nur sehe ich halt den dennoch keinen Vorteil in einem H wenn man es auch Handle nennen kann... Und genau das habe ich gesagt: "ich verstehe es nicht". Wobei ich es auch lange so gemacht habe, aber wie ich mal darueber nachgedacht habe, habe ich festgestellt, dass es nur Bequemlichkeit ist.
-
verstehe die einstellung von HumeSikkins nicht. man sollte doch überall gut programmieren (wenn man es kann) und nicht nur nach aussen hin.
-
rasta schrieb:
verstehe die einstellung von HumeSikkins nicht. man sollte doch überall gut programmieren (wenn man es kann) und nicht nur nach aussen hin.
ja.
aber nach innen gut und nach außen gut könne zweierlei dinge sein.
ich stelle mir vor, ich mache gerade mit containern rum. mit hashtables mal. dann mit avl-trees. dann mit tries, dann mit ...
alles auf der suche nach der geilsten datenstruktur, um ein gutes dictionary voller strings, wie sie in hochbelasteten nameservern so rumliegen, zu finen.da die gante zeit Key statt K und Value statt V zu schreiben, würde einen töen. wohlgemerkt, für eine dieser datenstrukturen, wenn sie zufriedenstellend sein soll, brauche ich mindestens 4 wochen.
nun kann man sich auf den standpunkt stellen, daß man immer Key,Value schreiben sollte. den standpunkt halte ich für irrig.
nun kann man sich auf den Standpunkt stellen, man sollte nach abschluß der forschungen K,V durch Key,Value ersetzen. geht ja mit search&replace der jeweiligen entwicklungsumgebung sehr gut. den standpunkt hielt ich für befremdlich. denn immerhin war *ich* ja nach solchen monaten sowas von im geschäft, daß ich mit den einbuchstabern weniger probleme hatte als mit langen bezeichnern.
nun kann man sich auf den standpunkt stellen, man solle K,V lassen. (oder H,E). das habe ich bisher so gemacht. und es war nie ein problem. aber humes code zu lesen war erweckend. ich hab ja nix auf anhieb gerafft (klar, nach 30 sekunden tröpfelt die erleuchtug ein, aber warum 30 sec dumm sein?). nun habe ich zu berfüchten, daß er meinen K,V-code genausoschlecht liest wie ich seinen H,E-code.
ich schau mal. bin gerade heftig auf einem lokalen c++-vereinfachungs-kreuzzug und da fliegen auch ein paar templates und ein wenig metaprogrammierung vorbei. ich schau mal, wo ich einbuchstaber duldbar finde.
übrigens waren zu anfang der template-benutzung einbuchstaber optimale bezeichner. man hatte ja nur mal T oder ganz selten noch nen zweiten buchstaben. da galt ungefär sowas
erster buchstabe klein erstes wort ein verb im infinitiv ist eine funktion, die bool liefert erstes word ein verb in befehlsform ist eine funktion erstes wort ein nomen ist variable erstes wort gross [b] erstes wort einbuchstaber ist typ als templateparemater[/b] alle anderen buchstaben gross ist makro sonst ist klasse