using namespace aufhaben



  • Dürfte man mal wissen, um welche Bibliothek es sich da handelt? 🙄



  • Nexus schrieb:

    Ich würde, wenn es nicht mit riesigem Aufwand verbunden wäre, die Headerdateien abändern...

    Jap, oder man munkelt, dass man auch sowas machen könnte:

    namespace haha_you_are_in_a_second_name_space
    {
    #include "evil_header_that_uses_using_namespace.h"
    }
    

    Aber naja. Die feine englische Art ist das nicht.



  • drakon schrieb:

    Nexus schrieb:

    Ich würde, wenn es nicht mit riesigem Aufwand verbunden wäre, die Headerdateien abändern...

    Jap, oder man munkelt, dass man auch sowas machen könnte:

    namespace haha_you_are_in_a_second_name_space
    {
    #include "evil_header_that_uses_using_namespace.h"
    }
    

    Aber naja. Die feine englische Art ist das nicht.

    Ja, und dann guck zu wie du das noch gelinkt bekommst.
    Davon abgesehen passieren viele äusserst unterhaltsame Dinge, wenn "evil_header_that_uses_using_namespace.h" noch weitere Headers inkludiert. z.B. Headers der Standard C++ Library.



  • drakon schrieb:

    Nexus schrieb:

    Ich würde, wenn es nicht mit riesigem Aufwand verbunden wäre, die Headerdateien abändern...

    Jap, oder man munkelt, dass man auch sowas machen könnte:

    namespace haha_you_are_in_a_second_name_space
    {
    #include "evil_header_that_uses_using_namespace.h"
    }
    

    Aber naja. Die feine englische Art ist das nicht.

    Nicht fein vielleicht. Nicht englisch vielleicht auch.
    Aber zusammen mit einer kleinen Zweckentfremdung von #pragma include_alias
    http://msdn.microsoft.com/en-us/library/wbeh5h91(VS.71).aspx äußerst wirkungsvoll.
    Jede cpp-Datei inkludiert zuerst die "bugfix.hpp" und alles geht gut. Die "bugfix.hpp" hat dann die wichtigsten Sachen drin. Ganz damals wurden damit <iostream.h> und <iostream> geheilt, später auch #define for if(false);else for, jahrelang habe ich die <windows.h> damit umverpackt, kurzum: sich mal #pragma include_alias anzusachen ist für MS-Compiler-Benutzer eine gute Idee.



  • hustbaer schrieb:

    Aber naja. Die feine englische Art ist das nicht.

    Ja, und dann guck zu wie du das noch gelinkt bekommst.
    Davon abgesehen passieren viele äusserst unterhaltsame Dinge, wenn "evil_header_that_uses_using_namespace.h" noch weitere Headers inkludiert. z.B. Headers der Standard C++ Library.[/quote]
    Stimmt. An die .cpp Dateien habe ich gar nicht gedacht, aber ich denke mit noch weiteren Hacks kann man auch das hinbiegen (noch ein wenig Makromagie). (sofern natürlich die Library kompiliert werden muss, sonst gehts natürlich gar nicht).

    Eigentlich machen wir uns aber ja schon nur strafbar solche Sachen überhaupt in Erwägung zu ziehen. :p



  • drakon schrieb:

    Stimmt. An die .cpp Dateien habe ich gar nicht gedacht, aber ich denke mit noch weiteren Hacks kann man auch das hinbiegen (noch ein wenig Makromagie). (sofern natürlich die Library kompiliert werden muss, sonst gehts natürlich gar nicht).

    Jetzt überlegst du aber wirklich nicht mehr? Wenn du schon die Library kompilieren musst, wieso änderst du es nicht gleich so, dass es auch korrekt funktioniert, statt da irgendwelche Makro-Magie zu erfinden? 😃

    Grüssli



  • Dravere_logoff schrieb:

    drakon schrieb:

    Stimmt. An die .cpp Dateien habe ich gar nicht gedacht, aber ich denke mit noch weiteren Hacks kann man auch das hinbiegen (noch ein wenig Makromagie). (sofern natürlich die Library kompiliert werden muss, sonst gehts natürlich gar nicht).

    Jetzt überlegst du aber wirklich nicht mehr? Wenn du schon die Library kompilieren musst, wieso änderst du es nicht gleich so, dass es auch korrekt funktioniert, statt da irgendwelche Makro-Magie zu erfinden? 😃

    Grüssli

    Doch, doch. Vielleicht möchte er ja einfach nicht den Source direkt anfassen. Das dürfte er dann nämlich jedes mal machen, wenn er die Library updatet.
    Vor allem dürfte er dann den ganzen Code, der sich bereits auf das using verlässt auch umschreiben.

    Aber wie gesagt ist alleine die Überlegung ein solches Workaround zu benutzen schon völliger Schwachsinn. 😉



  • ICH ziehe sowas nicht in Erwägung 🙂
    Bin ja keine 20 mehr...



  • hustbaer schrieb:

    ICH ziehe sowas nicht in Erwägung 🙂
    Bin ja keine 20 mehr...

    Oh, ich dachte, eher die 20-Jährigen seien die, die sich jugendlich-rebellisch gegen Tatsachen stellen. Und die reiferen Semester nehmen Gegebenheiten halt auch mal hin.



  • hustbaer schrieb:

    ICH ziehe sowas nicht in Erwägung 🙂
    Bin ja keine 20 mehr...

    Ich auch nicht. (in beiden Fragen. ;))



  • Ich würde sagen eher die 20-jährigen sind die, die furchtlos alle möglichen Hacks verwenden, ohne an die Konsequenzen zu denken.
    Ich habe schon so viel Müll heranwachsen sehen, und schon so oft unter den Konsequenzen gelitten, dass ich so Scheiss nichtmehr mache.

    Wenn ich heute so ein Problem hätte, würde ich einen anderen Weg finden. Gibt ja durchaus einige Möglichkeiten (in der Reihenfolge meiner Präferenz):

    1. Andere Library suchen, eine die weniger scheisse ist.
    2. Eine der beiden Libraries umschreiben.
    3. Gucken ob man den Code so auf verschiedene Übersetzungseinheiten aufteilen kann, dass man pro UE nur entweder die eine oder die andere Library zu inkludieren braucht.

  • Administrator

    hustbaer schrieb:

    ICH ziehe sowas nicht in Erwägung 🙂
    Bin ja keine 20 mehr...

    lol
    Ich hätte das nicht mal in Erwägung gezogen, als ich 20 war. Du in etwa?
    Bevor ich eine Bibliothek aussuche, schaue ich mir genau solche Dinge an. Das sind bei mir wichtige Entscheidungsfaktoren.

    Grüssli



  • Mit den Punkten stimme ich überein. Würde ich auch eher so machen.

    Aber was hat das bitteschön mit dem Alter zu tun?!
    Das hat ja nichtmal wirklich mit Erfahrung zu tun. Ich denke, dass jeder sehr schnell einsieht, warum das eine schlechte Idee ist so einen Hack zu benutzen..

    Ich denke, dass das eher Leute machen, die meinen, dass sie viel Ahung haben, aber in Wahrheit doch nicht wirklich was verstanden haben..

    Aber mit dem Alter hat das rein gar nichts zu tun.



  • Ich denke, dass jeder sehr schnell einsieht, warum das eine schlechte Idee ist so einen Hack zu benutzen..

    So einfach kann man das Thema nicht abtun.

    Wenn ein dreckiger Hack in 1-2 Stunden gemacht ist, eine saubere Lösung aber 2-3 Tage dauert (oder vielleicht noch länger), kann man unter Zeitdruck schonmal auf die Idee kommen, den Hack vorzuziehen. Vor allem wenn man 100% sicher weiss, dass er ohne unerwünschte Seiteneffekte funktionieren wird.

    Auf die Gründe warum ich so etwas trotzdem nichtmehr mache, will ich hier allerdings nicht so genau eingehen 🙂

    p.S.: ich denke schon dass es etwas mit dem Alter zu tun hat. Jungen Programmierern fehlt die Erfahrung. Die Erfahrung, wie schlimm ein Projekt mittel- bis langfristig unter solchen Hacks leiden kann. Und dass viele nur aus dem lernen bzw. nur das glauben, was sie selbst erlebt haben, ist denke ich auch keine Neuigkeit 🙂


  • Administrator

    hustbaer schrieb:

    p.S.: ich denke schon dass es etwas mit dem Alter zu tun hat. Jungen Programmierern fehlt die Erfahrung. Die Erfahrung, wie schlimm ein Projekt mittel- bis langfristig unter solchen Hacks leiden kann. Und dass viele nur aus dem lernen bzw. nur das glauben, was sie selbst erlebt haben, ist denke ich auch keine Neuigkeit 🙂

    Deshalb macht man ja am besten auch mal ein eigenes grösseres Projekt. Dies kann aber ruhig schon vor 20 geschehen. Und wenn jemand erst später in die Programmierung einsteigt, gilt dies ja noch mehr, dass sie es erst glauben, wenn sie es selber erlebt haben. Also ich finde es schon ein wenig sehr klischeehaft pauschalisiert 😉

    Grüssli



  • Na dann in guter alter diff Syntax:
    - Alter
    + Erfahrung

    Ansonsten ist das eine Redewendung, und war als solche zu verstehen. Zumindest in Ö ist es sehr üblich zu sagen "bin ja keine X mehr", wenn man meint: diese Zeit habe ich hinter mir. "Diese Zeit" ist dann z.B. eine Zeit, in der man Dummheiten gemacht hat, Wagnisse eingegangen ist, ohne Weitblick gehandelt hat etc.
    Insofern halte ich es für nicht ganz daneben das so zu sagen 😉



  • Deshalb macht man ja am besten auch mal ein eigenes grösseres Projekt.

    Wer hat schon Zeit privat "mal schnell nebenbei" ein Projekt zu machen das sich über 100+ KLOC und mehrere Jahre Betrieb, Änderungen und Wartung hinzieht?
    (Wobei 100 KLOC vermutlich eh noch niedrig angesetzt ist)


  • Administrator

    hustbaer schrieb:

    Wer hat schon Zeit privat "mal schnell nebenbei" ein Projekt zu machen das sich über 100+ KLOC und mehrere Jahre Betrieb, Änderungen und Wartung hinzieht?
    (Wobei 100 KLOC vermutlich eh noch niedrig angesetzt ist)

    Ich sagte eigenes grösseres, dann sind das keine 100+ KLOC. Du musst auch gar kein so grosses Projekt machen, um solche Erfahrungen zu sammeln. 30 bis 50 KLOC reichen da schon sehr gut und dann noch eine mehrjährige Unterstützung und Wartung. Da lernst du viel draus ... 🙄 ... sehr viel 😃

    Grüssli



  • Wobei "mehrjährige Unterstützung und Wartung" sich außer in gewissen Ausnahmefällen schonmal mit einem jungen Alter (um die 20) beißt. Wenns denn wirklich ein größeres Projekt ist - unter größer versteh ich durchaus auch die Größenordnung 100 KLOC.



  • hustbaer schrieb:

    Ich denke, dass jeder sehr schnell einsieht, warum das eine schlechte Idee ist so einen Hack zu benutzen..

    So einfach kann man das Thema nicht abtun.

    Wenn ein dreckiger Hack in 1-2 Stunden gemacht ist, eine saubere Lösung aber 2-3 Tage dauert (oder vielleicht noch länger), kann man unter Zeitdruck schonmal auf die Idee kommen, den Hack vorzuziehen. Vor allem wenn man 100% sicher weiss, dass er ohne unerwünschte Seiteneffekte funktionieren wird.

    Auf die Gründe warum ich so etwas trotzdem nichtmehr mache, will ich hier allerdings nicht so genau eingehen 🙂

    p.S.: ich denke schon dass es etwas mit dem Alter zu tun hat. Jungen Programmierern fehlt die Erfahrung. Die Erfahrung, wie schlimm ein Projekt mittel- bis langfristig unter solchen Hacks leiden kann. Und dass viele nur aus dem lernen bzw. nur das glauben, was sie selbst erlebt haben, ist denke ich auch keine Neuigkeit 🙂

    Ja, aber ich denke es gibt schmutzige Hacks, und solche wie diesen da. So was ist unterste Schublade. 😉

    Klar feinere Sachen müssen wahrscheinlich schon erst mit der Zeit fest gestellt werden, aber das sind dann imo weniger Hacks, sondern einfach wirklich Erfahrungswerte.

    Ich denke mit dem Diff kann ich mich einigermassen abgeben, weil deine Antwort einfach so geklungen hat, dass die Weisheit mit dem Alter kommt, was nicht stimmt, sondern eher mit der Erfahrung. Klar kann die richtige Menge Erfahrung nur mit dem Alter erreicht werden, aber umgekehrt gilt das nicht. (Also höheres Alter <=> mehr Erfahrung ist Unsinn). Was ich damit meine ist, dass es durchaus jüngere Leute gibt, die mehr Erfahrung haben, als die Älteren (oder auf dem aktuelleren Stand sind) und üblicherweise sind die Leute, die solche Bemerkungen, von wegen "ach die jungen Schnösel" bringen meist die, die selbst heimlich einsehen, dass sies nicht mehr bringen. (Soll jetzt dir gegenüber kein Vorwurf sein. Darum war ich ja so "entsetzt" von dir eine solche Antwort zu hören, da du offensichtlich noch gut informiert bist ;))


Anmelden zum Antworten