佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1401|回复: 6

探討編輯器功能:自動更名 (Rename)

[复制链接]
发表于 1-7-2006 10:41 AM | 显示全部楼层 |阅读模式
編輯器功能相異,你喜歡哪些?你非用到的功能有哪些?或者非用到某插件不可,否則就混身不自在,不能大展身手?

自動更名(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 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 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"就行。

  1. namespace Durian {
  2.         public partial class Form1 : Form {
  3.                 public Form1() {
  4.                         InitializeComponent();
  5.                 }

  6.                 private void Form1_Load(object sender, EventArgs e) {
  7.                         string s = "Silly World";

  8.                         for(int i=0; i < s.Length ; i++)
  9.                         {
  10.                                 Console.Write( s.Substring(i, 1) );
  11.                         }
  12.                 }
  13.         }
  14. }
复制代码

另一方法比較微妙:
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 编辑 ]
回复

使用道具 举报

Follow Us
发表于 15-8-2006 01:25 PM | 显示全部楼层
我习惯为全域变数灌上glo
公共变数灌上pub
这样要改名也变得简单了

那么看到gloIntReturn, pubIntReturn 或 intReturn时,
就很容易分辨那个是那个了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-5-2024 07:43 AM , Processed in 0.061065 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表