我确信之后标记符/继续是一个总的"诺诺"在这里,我需要帮助去除标签了我的代码.
我有一个方阵和一个长度相同的矢量.向量中已经有一些值,取决于矩阵中的值,循环中的向量发生了变化.
我希望,代码片段基本上是可以理解的......
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)
请说服我,没有标签就有更可读/更好的版本.
我的部门目前负责维护一个相当大的COBOL代码库.我们想知道如何添加新功能以满足业务需求.COBOL程序员现在很难找到,我们也认为使用Java或C#等更现代的语言可以提高工作效率.
我们认为我们有四种选择:
您认为我们最好的选择是什么?为什么?
是否有任何易于安装/使用(在unix上)的数据库迁移工具,如Rails迁移?我真的很喜欢这个想法,但是纯粹安装ruby/rails来管理我的数据库迁移似乎有些过分.
我们的编码标准要求我们尽量减少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#,但任何解决方案都会有所帮助
我正处于ASP.NET MVC项目的中间,最近安装了ReSharper 4.5 的免费试用版.我立刻意识到了这些好处,仅仅是因为它希望我做的重构.
像反转if语句以减少嵌套,更改我的if/将else语句返回到?/ ??运算符的语句- 大大减少了我的应用程序中的代码行数.
从单击执行空引用检查的功能,删除未使用的指令/变量或删除冗余代码(在不需要时调用.ToString()).或者,它可以看到我的视图让我知道我正在访问一个不再存在的属性,使得解决方案范围内的重命名更加彻底......真的可以节省大量时间.
但我觉得我只是看到了冰山一角.所以我问这个:
您使用ReSharper 做什么用途?除了我上面描述的直接好处之外还有什么?
我们都知道重构是好的,我和下一个人一样喜欢它,但是你有真正的案例,最好不要重构吗?
像时间关键的东西或同步?技术或人为原因同样受到欢迎.真实案例场景和经验加分.
编辑:从目前为止的答案来看,看起来不重构的唯一理由就是金钱.我的问题主要与这样的事情有关:假设您想要执行"提取方法",但是如果添加额外的函数调用,则会使代码稍微快一点并阻碍非常严格的同步.只是为了让你知道我的意思.
我有时听到的另一个原因是"用于当前代码布局的其他人会因你的更改而烦恼".当然,我怀疑这是一个很好的理由.
我已经开始重构/清理大项目了.有些文件包含很少的小类或很少的枚举(是的,它非常凌乱; /).
是否有一些方法或工具可以自动划分包含少量枚举/类的文件,并为每个文件创建单独的文件?
正如FredrikMörk所说 - Resharper是非常好的工具,有可能做我需要的.但当然,几乎所有好的工具都要花费(一个是便宜的,另一个不是:)).
也许有一些免费的工具可以进行这种简单的重构?(我的老板不会为Resharper支付 - 他告诉我我需要'锤'而不是整个车间:))
在重构期间,复制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片段重构为可重用元素(帮助者/函数/部分/构建器/等)?
我正在进行大规模的重构.
我有很多方法,通过位置参数调用.现在我想通过命名参数调用它们.这些方法存在于几个非继承的类中,并且具有相同的名称,并且它们的签名不同.例:
定义
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
refactoring ×10
c# ×3
resharper ×2
asp.net-mvc ×1
automation ×1
cobol ×1
code-reuse ×1
database ×1
dry ×1
haml ×1
java ×1
label ×1
legacy ×1
maintenance ×1
migration ×1
ruby ×1
view-helpers ×1