标签: refactoring

重构标记的循环

我确信之后标记符/继续是一个总的"诺诺"在这里,我需要帮助去除标签了我的代码.

我有一个方阵和一个长度相同的矢量.向量中已经有一些值,取决于矩阵中的值,循环中的向量发生了变化.

我希望,代码片段基本上是可以理解的......

vectorLoop:
for( int idx = 0; idx < vectorLength; idx++) {
    if( conditionAtVectorPosition( v, idx ) ) continue vectorLoop;

    matrixLoop:
    for( rowIdx = 0; rowIdx < n; rowIdx++ ) {
        if( anotherConditionAtVector( v, rowIdx ) ) continue matrixLoop;
        if( conditionAtMatrixRowCol( m, rowIdx, idx ) ) continue vectorLoop;
    }
    setValueInVector( v, idx );
}     
Run Code Online (Sandbox Code Playgroud)

请说服我,没有标签就有更可读/更好的版本.

java refactoring label

18
推荐指数
1
解决办法
1829
查看次数

重写遗留代码

我的部门目前负责维护一个相当大的COBOL代码库.我们想知道如何添加新功能以满足业务需求.COBOL程序员现在很难找到,我们也认为使用Java或C#等更现代的语言可以提高工作效率.

我们认为我们有四种选择:

  1. 从头开始重写所有内容,将旧应用程序留给自己,直到它准备好被替换
  2. 从头开始重写所有内容,让一些人维护旧应用程序,以便在构建新应用程序时满足新的业务需求
  3. 用现代语言编写所有新功能,并找到一些方法将新代码与旧功能集成.
  4. 继续维护旧的应用程序.

您认为我们最好的选择是什么?为什么?

legacy refactoring maintenance cobol

18
推荐指数
5
解决办法
3720
查看次数

类似Rails的数据库迁移?

是否有任何易于安装/使用(在unix上)的数据库迁移工具,如Rails迁移?我真的很喜欢这个想法,但是纯粹安装ruby/rails来管理我的数据库迁移似乎有些过分.

ruby database migration refactoring ruby-on-rails

18
推荐指数
1
解决办法
3162
查看次数

将C#var重构为显式类型的工具

我们的编码标准要求我们尽量减少C#var的使用(建议限制它与Linq一起使用).然而,有时候使用泛型的地方比较方便,例如

Dictionary<DateTime, Dictionary<string, float>> allValues = ...
// ...
foreach (var dateEntry in allValue)
Run Code Online (Sandbox Code Playgroud)

更容易打字

foreach (KeyValue<DateTime, Dictionary<string, float>> dateEntry in allValue) 
Run Code Online (Sandbox Code Playgroud)

(并且比在某些情况下记住显式类型更容易).

任何重构工具都能够将前者转换为后者.我已经看过Resharper,但它似乎并没有(事实上,它的默认建议是向相反的方向发展).

c# refactoring

18
推荐指数
2
解决办法
5196
查看次数

它是否存在:重复代码查找器?

在不久的将来,我将继承一个有点大的项目.我最近对它进行了一些小的更新,并注意到它的一部分可能会使用一些重构,因为有些方法执行相同的操作,但差别很小.

我想知道是否有一个工具需要一堆源代码并找到类似的代码块,以便可以识别它们以进行可能的重构.如果存在模糊搜索,那将是很好的,因此它可以识别类似的操作(除了只是逐字重复的代码).

我不希望程序重构代码本身,只是确定潜在的重复.

我的平台是C#,但任何解决方案都会有所帮助

language-agnostic code-reuse refactoring dry

18
推荐指数
3
解决办法
3027
查看次数

您使用ReSharper做什么用途?

我正处于ASP.NET MVC项目的中间,最近安装了ReSharper 4.5 的免费试用版.我立刻意识到了这些好处,仅仅是因为它希望我做的重构.

像反转if语句以减少嵌套,更改我的if/将else语句返回到?/ ??运算符的语句- 大大减少了我的应用程序中的代码行数.

从单击执行空引用检查的功能,删除未使用的指令/变量或删除冗余代码(在不需要时调用.ToString()).或者,它可以看到我的视图让我知道我正在访问一个不再存在的属性,使得解决方案范围内的重命名更​​加彻底......真的可以节省大量时间.

但我觉得我只是看到了冰山一角.所以我问这个:

使用ReSharper 做什么用途?除了我上面描述的直接好处之外还有什么?

asp.net-mvc resharper refactoring automation

18
推荐指数
2
解决办法
9170
查看次数

什么时候不应该重构?

我们都知道重构是好的,我和下一个人一样喜欢它,但是你有真正的案例,最好不要重构吗?

像时间关键的东西或同步?技术或人为原因同样受到欢迎.真实案例场景和经验加分.

编辑:从目前为止的答案来看,看起来不重构的唯一理由就是金钱.我的问题主要与这样的事情有关:假设您想要执行"提取方法",但是如果添加额外的函数调用,则会使代码稍微快一点并阻碍非常严格的同步.只是为了让你知道我的意思.

我有时听到的另一个原因是"用于当前代码布局的其他人会因你的更改而烦恼".当然,我怀疑这是一个很好的理由.

refactoring

18
推荐指数
4
解决办法
4842
查看次数

自动将所有类放在单独的文件中

我已经开始重构/清理大项目了.有些文件包含很少的小类或很少的枚举(是的,它非常凌乱; /).
是否有一些方法或工具可以自动划分包含少量枚举/类的文件,并为每个文件创建单独的文件?

正如FredrikMörk所说 - Resharper是非常好的工具,有可能做我需要的.但当然,几乎所有好的工具都要花费(一个是便宜的,另一个不是:)).

也许有一些免费的工具可以进行这种简单的重构?(我的老板不会为Resharper支付 - 他告诉我我需要'锤'而不是整个车间:))

c# refactoring visual-studio-2008

18
推荐指数
2
解决办法
1万
查看次数

Rails:是否可以使用HAML语法编写视图助手?

在重构期间,复制HAML模板的一部分并将其粘贴到帮助程序的代码是非常方便的.目前在这种情况下1)我必须从头开始重写该部分视图2)我必须使用详细的语法,如content_tag或haml_tag.

我知道可以使用HAML systax定义部分内容,这些内容将作为帮助程序.虽然1)对我来说,为每个小的微小函数创建一个单独的文件是不方便的2)部分的调用语法非常详细.

理想情况下,我希望我的*_helper类看起来像这样:

- def some_helper(*its_args)
  .some_class
    = some_ruby_expression
  %some_tag#some_id
    - another_expression do
      etc
Run Code Online (Sandbox Code Playgroud)

或者至少像这样:

define_haml_helper :some_helper, [:arg1, :arg2], %{
  .some_class
    = some_ruby_expression
  %some_tag#some_id
    - another_expression do
      etc
}
Run Code Online (Sandbox Code Playgroud)

有插件可以解决我的问题吗?

或者,您可以描述如何将HAML片段重构为可重用元素(帮助者/函数/部分/构建器/等)?

haml refactoring ruby-on-rails view-helpers

18
推荐指数
1
解决办法
5622
查看次数

自动重构以向方法调用添加参数名称

我正在进行大规模的重构.

我有很多方法,通过位置参数调用.现在我想通过命名参数调用它们.这些方法存在于几个非继承的类中,并且具有相同的名称,并且它们的签名不同.例:

定义

public class Foo
{
    public static Foo Create(int count, string name)
    {
        ...
    }
}

public class Bar
{
    public static Bar Create(string description, bool yesNo, float factor)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我想要替换的电话

public void CreateSomeObjects()
{
    var foo = Foo.Create(123, "foo");
    var bar = Bar.Create("bar", true, 1.23);
}
Run Code Online (Sandbox Code Playgroud)

public void CreateSomeObjects()
{
    var foo = Foo.Create(count: 123, name: "foo");
    var bar = Bar.Create(description: "bar", yesNo: true, factor: 1.23);
}
Run Code Online (Sandbox Code Playgroud)

我使用Visual Studio Premium 2013和Resharper.任何想法如何实现这一目标?(我只需要一个提示,没有完整的解决方案.)

c# resharper refactoring automated-refactoring visual-studio

18
推荐指数
2
解决办法
4384
查看次数