我经常通过在我正在处理的类中创建一个内部类来重构代码 - 当我完成后,我将整个事物移动到一个新的类文件中.这使得重构代码变得非常容易,因为A)我只处理单个文件,而B)我不会创建新文件,直到我对名称/名称有很好的了解(有时它最终会不止一个班).
有没有什么方法Eclipse可以帮助我完成最后的行动?我应该能够告诉它我想要该类的包,它可以从类名和包中的目录中找出文件名.
这似乎是一个微不足道的重构,而且非常明显,但我无法弄清楚击键/手势/无论如何实现它.我尝试过拖动,菜单,上下文菜单以及浏览键盘快捷键.
谁知道这个?
[edit]这些已经是这个文件中的"顶级"类,而不是内部类,而"Move"似乎不想为我创建一个新类.这是我通常做的艰难的方式 - 涉及外出,创建一个空课,回来和移动.我想一步完成整个过程.
我正在做一些编码,我必须编写这种代码:
if( array[i]==false )
array[i]=true;
Run Code Online (Sandbox Code Playgroud)
我想知道它是否应该重写为
array[i]=true;
Run Code Online (Sandbox Code Playgroud)
这就提出了一个问题:比例分配的速度快吗?
从语言到语言的差异怎么样?(例如java和cpp之间的对比)
注意:我听说"过早优化是所有邪恶的根源." 我不认为这适用于:)
有没有办法配置或者是否有任何第三方插件可用于提供丰富的重构的Eclipse CDT(任何版本)?我的重构菜单仅在Eclipse Indigo CDT中提供以下内容:
我正在寻找具有Java重构丰富性的东西:
或者像DevExpress Refactor Pro提供的东西:
http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/
请注意,DevExpress插件与Eclipse不兼容.我非常愿意为一个好的第三方插件买单(它只需要在Eclipse中支持C++).
我有一个代码非常混乱的项目 - 这里和那里有很多重复和死代码.
前一段时间单元测试的代码覆盖率为零,但现在我们尝试以TDD方式编写所有新代码,并通过单元测试覆盖"旧"代码来降低技术债务(测试最后技术).
业务逻辑的复杂性非常高,有时候没有人可以回答是否使用了某些方法.
如何找到这种死代码方法?广泛的伐木?更高的测试覆盖率?(这不是很容易,因为客户想要新的功能出来)
我的一位同事正在我们一起工作的项目中实现一个新功能,他通过从同一个项目中获取包含类似功能实现的文件来创建它,创建一个重命名所有全局声明并稍微修改它的副本.实现.所以我们最终得到了两个大文件,除了重命名之外几乎完全相同.
我试图解释它使我们的项目更难维护,但他不想改变任何说他更容易以这种方式编程的东西,并且没有理由修复代码,如果它"不是打破了".
我怎么能说服他这样的代码重复是件坏事呢?
它与这些问题有关,但我对针对技术人员(另一个程序员)的答案更感兴趣,例如,对书籍这样的权威来源的引用会很棒.我已经尝试过简单的参数并且没有成功.
我有四个foreach循环遍历集合并根据条件执行某些操作.
这是我现在写的代码:
boolean breakFlag = false;
String valueFromObj2 = null;
String valueFromObj4 = null;
for(Object1 object1: objects){
for(Object2 object2: object1){
// I get some value from object2
valueFromObj2 = object2.getSomeValue();
for(Object3 object3 : object2){
for(Object4 object4: object3){
// Finally I get some value from Object4.
valueFromObj4 = object4.getSomeValue();
// Compare with valueFromObj2 to decide either to break all the foreach loop
breakFlag = compareTwoVariable(valueFromObj2, valueFromObj4 );
if(breakFlag){break;}
} // fourth loop ends here
if(breakFlag){break;}
} // third loop ends here …Run Code Online (Sandbox Code Playgroud) 在单元测试中,setup方法用于创建测试所需的对象.
在那些设置方法中,我喜欢使用断言:我知道我想在这些对象中看到什么值,我喜欢通过断言来记录这些知识.
在最近的文章中对单元测试调用其他单元测试在这里计算器,总的感觉似乎是,单元测试应该没有调用其他检查:这个问题的答案似乎是,你应该重构你的设置,使测试用例做不相互依赖.
但是"设置与断言"和单元测试调用其他单元测试没有太大区别.
因此我的问题是:在设置方法中使用断言是一种好习惯吗?
编辑:
答案结果证明:这不是一般的好习惯.如果需要测试设置结果,建议在断言中添加单独的测试方法(我勾选的答案); 为了记录意图,请考虑使用Java断言.
我正在使用Eclipse,目前的解决方案(我不喜欢)是使用"搜索/替换".这是一个容易出错的解决方案.
您是否知道在大型应用程序中安全地重构JavaScript,HTML,CSS资源的更好方法?或者你使用任何其他酷的重构工具?
不知怎的,我设法打破了我在Intellij IDEA 12中的重构功能.我以某种方式为我的项目禁用了它.通过Shift+ 重命名成员F6不起作用.未绘制内联编辑框,没有任何反应.
我知道重构设置Settings -> Editor,Enable in-place mode并且Preselect old name都进行了检查.
它必须是某种项目设置.我通过创建一个测试项目进行检查,添加一些成员并重命名它,这非常有效.
我在寻找什么样的环境?或者我的项目可能被打破?
我的同事向我展示了这段代码,我们都想知道为什么我们似乎无法删除重复的代码.
private List<Foo> parseResponse(Response<ByteString> response) {
if (response.status().code() != Status.OK.code() || !response.payload().isPresent()) {
if (response.status().code() != Status.NOT_FOUND.code() || !response.payload().isPresent()) {
LOG.error("Cannot fetch recently played, got status code {}", response.status());
}
return Lists.newArrayList();
}
// ...
// ...
// ...
doSomeLogic();
// ...
// ...
// ...
return someOtherList;
}
Run Code Online (Sandbox Code Playgroud)
这是一个替代表示,使它不那么罗嗦:
private void f() {
if (S != 200 || !P) {
if (S != 404 || !P) {
Log();
}
return;
}
// ...
// ...
// ...
doSomeLogic();
// …Run Code Online (Sandbox Code Playgroud) refactoring ×10
eclipse ×3
java ×3
assertions ×1
c++ ×1
coding-style ×1
copy-paste ×1
css ×1
eclipse-cdt ×1
fixtures ×1
foreach ×1
html ×1
if-statement ×1
javascript ×1
legacy-code ×1
logic ×1
optimization ×1
performance ×1
php ×1
rename ×1
unit-testing ×1