Gering ding ding ding din schriebrriw schriebVersuch mal mit vim deine Globale Variable i umzubenennen. IDEs können das - sagte der IBM Eclipse Entwickler.
Nicht, dass ich das schonmal machen musste, aber spontan klingt das für mich nach nem Fall für den Stream Editor... - wäre zumindest mein erster Gedanke... oder nicht?
So einfach ist diese sehr typische Aufgabe nicht. Du hast ja nicht nur zehn Dateien, sondern paar hundert. Und Du hast nicht deren gesamten Inhalt im Kopf, so daß Du sagen könntest, dieses Symbol bezeichnet wirklich immer genau diese eine Variable und nie etwas anderes.
Nimm als Beispiel eine Membervariable einer Klasse und zwar eine, die noch in drei anderen Klassen mit genau demselben Namen vorkommt, z.B. ein Zeiger auf ein übergeordnetes Elternobjekt, pParent. Du willst jetzt in einer Klasse diese Variable umbenennen, um einen Unterschied in der Bedeutung kenntlich zu machen. Das ist mit sed nicht mehr zu schaffen, da sed die Semantik des Symbols nicht kennt. sed weiß ja nicht einmal, daß es sich um eine Variable handelt, er würde Funktionsparameter, Funktionen, Typen, enum-Werte und Präprozessormakros gleich mit umbenennen, wenn er gleichnamige findet.
Es kann in der Praxis bereits ein Problem sein, den Parameter einer großen Methode umzubenennen, insbesondere wenn man sich den Stil angewöhnt hat, Parameter und Variablen nicht dem Zweck nach, sondern dem Typ nach zu benennen, myInteger (sehr oft in Lehrbüchern).
Eine gescheite IDE parst Deine Quellen und weiß, wie weit sich der Geltungsbereich eines jeden ganz konkreten Symbols erstreckt, selbst wenn es Überdeckungen beispielsweise globaler durch lokale Variablen gibt. Der rückwärtige Aufwand dazu ist allerdings beträchtlich - Visual Studio beispielsweise kann sich minutenlang mit sich selbst beschäftigen und dabei Hilfsdateien von mehreren hundert MB anlegen.