mis schriebIch denke mal T.M. meint nicht nur seinen eigenen Quellcode.
🙂 Wenn ich schnell mal durchzähle ... mein Projekt in der Firma hat in den letzten zehn Jahren nicht weniger als 51 MB nur an reinen C++-Quelldateien angesammelt (ohne fremde libs), insgesamt 8100 Dateien. Ein einziges, noch nicht einmal wunder wie grosses Projekt.
Davon gehen 62 Dateien von schätzungsweise acht verschiedenen Personen (mit ihren jeweiligen individuellen Handschriften) mit regulären Ausdrücken um, teils länger als eine Bildschirmzeile. Klingt vielleicht zunächst nicht viel, aber bei so einer Ersetzungsaktion wäre jeder einzelne Fall zu prüfen, die darunterliegende regex-Implementierung ist ja eine andere, d.h. man müsste erst einmal einen anständigen Testfall für jede einzelne Situation durchdenken und aufbauen, jetzt, Jahre später. Eine Verhaltensänderung des Programms, die vielleicht irgendwann in einigen Monaten oder Jahren in einem selten durchlaufenen Codestück bemerkt wird, wäre fatal - es ist ein Verkehrsprojekt, es hängen womöglich Menschenleben davon ab, dass eine Ampel bei einem Tunnelbrand richtig schaltet. Und das Testen von regulären Ausdrücken kann aufwendig sein, man muss ja nicht nur die erlaubten Positiv-Fälle testen, also matches, sondern auch wahrscheinliche Negativ-Fälle, also mismatches. Da sitzt einer wahrscheinlich länger als eine Woche dran. Und was ist dann gewonnen? Und nicht zuletzt: wer zahlt das?
Ich halte es deshalb für wenig wahrscheinlich, dass solcher Code aus der boost entfernt wird. Der wird noch lange Jahre in der boost enthalten sein, wahrscheinlich sogar für immer. - Der Vorteil ist lediglich der, dass einer, der jetzt ein neues Projekt anfängt, nicht zwingend sofort zu boost greifen muss, sofern es nicht um speziellere Funktionalität geht.