查看: 1401|回复: 6
|
探討編輯器功能:自動更名 (Rename)
[复制链接]
|
|
編輯器功能相異,你喜歡哪些?你非用到的功能有哪些?或者非用到某插件不可,否則就混身不自在,不能大展身手?
自動更名(Rename)
你有發覺到吗?在編輯器裡,就連只换一個function内的變數名也很麻煩,更不要說要换一個全局變數(Global Variable)的名字。如果你沒有这種痛苦經驗,那麽也許你總是能一擊即中,所定義的變數名總是完美无缺,沒有更改的必要。也或者你瞭解这種痛苦,也不想再嘗苦,唯有错有错著。最怕的是你從來不覺得正確命名很重要,你心裡可能在想:程是偶編的,名是偶给的,偶當然知道它是干什麽的!
我的經驗中,只有较新的IDE有内建更名功能,譬如Borland Developer Studio 2006和Visual Studio 2005。如果使用Visual Studio 2003,就要安裝如 ReSharper 的插件,才能享受自動更名的樂趣。
爲什麽只有近期的IDE有内建自動更名功能?也許因爲這功能看似簡單,實則不簡單。對於以文本形式儲存的源碼,更名并不只是簡單的“尋找及更换(Find & Replace)” 過程,系統必須分析整個程式,搞清楚誰真正在用這個變數,才能正確无誤地改名。但若每次改名都要分析整個程式,不是很慢嗎?所以在你編輯源碼的當兒,編輯器其實已在背後偷偷忙着分析了。這些分析出來的結果,當然不只用於改名而已,也用于大家平常都会碰到的Intellisense。
人說女怕嫁错郎,男怕娶错娘,我說碼怕改错名。
錯誤的名字,是源碼維護的巨大阻礙。
[ 本帖最后由 fxam 于 1-7-2006 11:00 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 1-7-2006 12:49 PM
|
显示全部楼层
原帖由 fxam 于 1-7-2006 10:41 AM 发表
編輯器功能相異,你喜歡哪些?你非用到的功能有哪些?或者非用到某插件不可,否則就混身不自在,不能大展身手?
自動更名(Rename)
你有發覺到吗?在編輯器裡,就連只换一個function内的變數名也很麻煩,更不要 ...
我一路以来都是用Eclipse 开发 java application. 这IDE 里面有一个很强的feature, 他们叫refactoring. 这refactoring 包括了rename method name, variable, interface/class name, package(vb.net/c# 叫 namespace)等等。这功能非常方便,而且操作简单。比如我写了几个classes implements AbcInterface, 如果我rename AbcInterface -> CbdInterface, 这feature 会把我写的几个classes 通通改去implmenets CbdInterface, 非常方便。
这几天因为工作需要,而去用Visual Studio 2005开发 C# application, 发觉好象rename namespace 是不会automatic 改我related 的classes。可能有这功能吧,只是我不懂罢了。有谁知道,可以告知吗?
此外,我觉得Studio 2005 的editor 有点迟钝, 比如有些code 是有问题的,而它不会直接highlight 有问题的code, 而是要等到我build 之后它才highlight有问题的code. |
|
|
|
|
|
|
|
楼主 |
发表于 4-7-2006 09:49 PM
|
显示全部楼层
这几天因为工作需要,而去用Visual Studio 2005开发 C# application, 发觉好象rename namespace 是不会automatic 改我related 的classes。可能有这功能吧,只是我不懂罢了。
是可以换namespace的名,你选Preview Reference Change,看Preview的結果是否正確?
此外,我觉得Studio 2005 的editor 有点迟钝, 比如有些code 是有问题的,而它不会直接highlight 有问题的code, 而是要等到我build 之后它才highlight有问题的code.
VS 2005的確是遲鈍 |
|
|
|
|
|
|
|
发表于 5-7-2006 08:20 AM
|
显示全部楼层
回复 #3 fxam 的帖子
为什么会迟钝?因为它里面太多东西要检查?所以慢了?
我也是用着VS2005,我也是觉得他很迟钝。。。。入黑木头所说的。。。呵呵。。
对了,fxam,你所说的,你不是说,如果我rename,那个IDE会帮我们自动改完所有的功能?而不是让我们自己一个个去find and replace,对吗? |
|
|
|
|
|
|
|
发表于 5-7-2006 09:33 AM
|
显示全部楼层
原帖由 fxam 于 4-7-2006 09:49 PM 发表
是可以换namespace的名,你选Preview Reference Change,看Preview的結果是否正確?
VS 2005的確是遲鈍
对,这namespace refactoring正是我找的,可能我太急吧,没有好好去了解studio IDE 的features.好笑的是,之前我还唠唠数它的不是。
谢谢 |
|
|
|
|
|
|
|
楼主 |
发表于 6-7-2006 07:50 AM
|
显示全部楼层
为什么会迟钝?因为它里面太多东西要检查?所以慢了?
幕後工作是一原因,另一原因可能是有蟲,最大的可能,是未加優化就迫不急待推出軟件。
而不是让我们自己一个个去find and replace,对吗?
对,他會自動查出什麽地方有用到你要改的變數、物件、类名、namespace等。
比如說我要将Durian改成Kiwi,就將游標移到Durian那邊,再選菜單上的"Refactor, Rename"就行。
- namespace Durian {
- public partial class Form1 : Form {
- public Form1() {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e) {
- string s = "Silly World";
- for(int i=0; i < s.Length ; i++)
- {
- Console.Write( s.Substring(i, 1) );
- }
- }
- }
- }
复制代码
另一方法比較微妙:
1. 將遊標移到Durian
2. 用Backspace或任何方法删掉Durian, 再輸入Kiwi。
3. 如果你仔細看,會發覺在刪着Durian和輸入Kiwi的當兒,最后一个字的下面會出現一个小小的長方形。
4. 小小長方形就是所謂的SmartTag,如果用滑鼠靠近这个長方形,然後等一會兒,就會出現一個圖標,按這個圖標就會出現改名的菜單。
5. 若不喜歡用滑鼠,在改了名字后,按Alt+Shift+F10也可以叫出改名菜單。
我最喜歡的法子是將"Refactor, Rename"的鍵盤改成F2。這樣子我只要移到看不順眼的地方,再按F2就可以輕鬆改名。就像在Explorer改文件名一樣。
[ 本帖最后由 fxam 于 6-7-2006 07:59 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 15-8-2006 01:25 PM
|
显示全部楼层
我习惯为全域变数灌上glo
公共变数灌上pub
这样要改名也变得简单了
那么看到gloIntReturn, pubIntReturn 或 intReturn时,
就很容易分辨那个是那个了。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|