CnPack Forum


 
Subject: 建议cnpack关注一下代码重构功能
fengyq (白菜一大颗)
新警察
Rank: 1



UID 11599
Digest Posts 0
Credits 24
Posts 7
点点分 24
Reading Access 10
Registered 2007-4-23
Status Offline
Post at 2009-4-1 17:14  Profile | Blog | P.M. 
建议cnpack关注一下代码重构功能

使用eclipse的人都知道 eclipse的代码重构功能特别强
光标处变量高亮,变量/方法重命名,抽取变量/常量,生成方法,搜索变量/方法被引用处,变量移动(跨类),生成接口.生成父类等等

当然这是eclipse自身的功能强大,作为delphi的插件去实现这些功能相比是难以完成的.
不过很多还是可以做的
光标处变量高亮 已经有这个功能,默认似乎是不打开的,也可能因为我一直是覆盖安装
变量/方法重命名 现在又一个f2修改变量名的功能,简陋而不精确
抽取变量/常量,生成方法 这应该是可以做的
搜索变量/方法被引用处 范围为:dpr文件中的pas和search path中的pas,在uses中包含了本单元的单元
生成接口.生成父类,似乎可以对本单元的源代码文本进行分析找到所有方法进而生成接口
等等
如果我考虑的不周还请见谅 仅做建议
主要是希望cnpack在重构这方面更加强大

[ 本帖最后由 fengyq 于 2009-4-1 17:17 编辑 ]
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6804
Posts 3577
点点分 6804
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2009-4-1 18:55  Profile | Blog | P.M. 
CnPack IDE专家包确实目前只能做到楼主所提到的功能中的前两项:光标处变量高亮,变量/方法重命名。第一项默认未打开,是怕用户不适应,需要在IDE扩展设置的源码高亮设置中将其打开。第二项目前也就是一个简单的标识符查找替换功能。

由于重构涉及到比较复杂的语法处理,而这部分正是CnPack的弱项,因此重构的相关功能目前并未实现太多,并且也未进行完整的设计。
BDS后的IDE中提供了一些内嵌的Refactor功能,如果楼主用的是这些IDE,可以试一试,它们功能也不弱了。
Top
fengyq (白菜一大颗)
新警察
Rank: 1



UID 11599
Digest Posts 0
Credits 24
Posts 7
点点分 24
Reading Access 10
Registered 2007-4-23
Status Offline
Post at 2009-4-2 22:50  Profile | Blog | P.M. 
回复 #2 Passion 的帖子

对了 有一个问题 ctrl+shift+v(cnpack的转到方法声明变量处),经常定位不准。
这个取位置的处理貌似是先找到一个方法结束end,然后找到对应的begin。但是这里经常找错end,比如我copy一个方法(比较短),将光标定位在begin和end之间某行,按下ctrl+shift+v,可能找到的不是本方法的end,猜测是不是和cnpack记录的最后光标位置有关,是使用这个位置作为开始位置来进行定位的吗。是否和代码编辑器扩展中 新纪录的最小间隔 设置有关。这里默认是5行,那么是很有可能cnpack使用的位置其实不是光标位置的。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6804
Posts 3577
点点分 6804
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2009-4-3 06:32  Profile | Blog | P.M. 
cnpack的转到方法声明变量处并未使用到光标的记录最后位置,而是搜索光标前的procedure或function等来定位的。
您所预见的定位有问题的unit,能否发来看看并指明定位错误的地方?如果是我们的bug,我们会尽快修正的。
Top
fengyq (白菜一大颗)
新警察
Rank: 1



UID 11599
Digest Posts 0
Credits 24
Posts 7
点点分 24
Reading Access 10
Registered 2007-4-23
Status Offline
Post at 2009-4-7 14:22  Profile | Blog | P.M. 
说一个现象供分析
先写一个类的方法,使用ctrl+shift+c生成方法体,使用ctrl+shift+v定位到var后,将方法体整个删除掉,再定位到方法声明并使用 ctrl+shift+c生成方法体,再次ctrl+shift+v,这时就会出现定位不准,这里一般会定位到上个方法的end
Top
fengyq (白菜一大颗)
新警察
Rank: 1



UID 11599
Digest Posts 0
Credits 24
Posts 7
点点分 24
Reading Access 10
Registered 2007-4-23
Status Offline
Post at 2009-4-7 14:23  Profile | Blog | P.M. 
环境 cnpack Ver: 0.9.1.492 Build 2009.04.04
     delphi 7
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6804
Posts 3577
点点分 6804
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2009-4-7 14:52  Profile | Blog | P.M. 
您所说的“再次ctrl+shift+v”,其实是跳至方法体后的返回原位的动作,而不是重新定位到方法体。

我们推荐ctrl+shift+v跳到var区,输入内容后,再按ctrl+shift+v(或ESC)返回,之后才能重新跳到var区。
Top
 




All times are GMT++8, the time now is 2024-9-8 09:18

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.016110 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP