标签: refactoring

无情地重建或建造一个扔掉?

在使用新的系统概念或新技术的情况下,必须建立一个可以扔掉的系统,因为即使是最好的规划也不是那么无所不知,以至于第一次就做好了.因此计划抛弃一个; 无论如何,你会的.

- 弗雷德布鲁克斯,神话人月 [强调我的]

建立一个扔掉.这就是他们告诉我的.然后他们告诉我,我们现在都很敏捷,所以我们应该无情地重构.是什么赋予了?

是不是总是更好的重构我的方式走出困境?如果没有,任何人都可以建议一个经验法则来帮助我决定何时坚持下去,何时放弃并重新开始?

refactoring

23
推荐指数
3
解决办法
3593
查看次数

是否有任何实用程序可以帮助我重构CSS

我正在使用一些写得不好的CSS,至少可以说.我不是设计/ CSS专家,但我至少理解CSS中的C语言.虽然VS-2008内置的CSS支持比以前的版本有了很大的改进,但它仍然没有完全符合我的要求.

我想知道是否有人知道一个好的程序或实用程序,它将帮助我重构和清理我的CSS,就像ReSharper允许用C#做的那样.

一些很好的功能:

  • 检查CSS文件并确定提取字体样式,颜色等常用样式的方法......
  • VS-2008的插件会很棒!
  • 检查标记文件并提出一些改进当前类和样式用法的建议.

css asp.net refactoring

23
推荐指数
2
解决办法
3190
查看次数

为什么visual studio中的extract方法命令会创建静态方法?

为什么默认情况下Visual Studio在重构代码和选择提取方法时会创建一个私有静态方法?

如果我正在重构一个非静态类,并且该方法只在类中可见,为什么它是静态的?

通过在非静态类中调用私有静态方法与非静态类中的非静态方法相比,是否有一些性能优势?

是否可读性只是简单地表明该方法不依赖于类的任何成员变量?

c# refactoring visual-studio

23
推荐指数
1
解决办法
2602
查看次数

如何在C#中重写一个非常大的复合if语句?

在我的C#代码中,我有一个非常开始的if语句:

if((something == -1) && (somethingelse == -1) && (etc == -1)) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

它正在增长.我认为现在必须有20个条款.

应该怎么处理这个?

c# refactoring if-statement structure guard-clause

23
推荐指数
6
解决办法
2万
查看次数

在C++中过度使用`this`

我正在处理一个大型代码库,它始终使用以下构造

class MyClass
{
public:
  void f(int x);
private:
  int x;
};


void MyClass::f(int x)
{
'
'
  this->x = x;
'
'
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我总是使用,因此更喜欢这种形式

class MyClass
{
public:
  void f(int x);
private:
  int _x;
};


void MyClass::f(int x)
{
'
'
  _x = x;
'
'
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者的原因是它更简洁(更少的代码=更少的潜在错误),并且我不喜欢在范围内同时拥有多个同名的变量,我可以避免它.也就是说,我现在越来越多地看到以前的用法.我不知道第二种方法有什么好处吗?(例如,对编译时的影响,使用模板化代码等等)两种方法的优点是否足够重要,另一方面是否重构?我要问的原因是,虽然我不喜欢代码中存在的第二种方法,但是引入更多错误的工作量和相关风险并不值得重构.

c++ refactoring this

23
推荐指数
3
解决办法
1万
查看次数

糟糕系统设计的代码重构

我是一名初级软件工程师,他接受了接管旧系统的任务.根据我的初步评估,该系统存在一些问题.

  1. 意大利面条代码
  2. 重复的代码
  3. 10k及以上的课程
  4. 使用log4j进行误操作和过度记录
  5. 糟糕的数据库表设计
  6. 缺少源代码控制 - >我为此设置了Subversion
  7. 缺少文档 - >除了阅读代码之外,我不知道业务规则

我该怎么做才能提高系统质量并解决这些问题?我可以考虑使用静态代码分析软件来解决任何不良编码实践.

但是,它无法检测到任何不良设计问题或问题.我该如何逐步解决这些问题?

java refactoring legacy-code

23
推荐指数
5
解决办法
1827
查看次数

重命名重构是否为强类型剃刀视图中的某个人工作?

我有一个看起来像这样的模型:

public class Person
{
     public string PostalCode {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个剃刀的观点

@model MvcApp1.Person

Your location is: @Model.PostalCode
Run Code Online (Sandbox Code Playgroud)

当我使用Visual Studio的2010重命名重构(Ctrl + R,R)时,属性在模型类上重命名,但在视图中保持不变.

我的理解是,由于视图是强类型的,因此视图中也应该重命名.

我究竟做错了什么?

asp.net-mvc refactoring visual-studio-2010 strongly-typed-view razor

23
推荐指数
1
解决办法
1938
查看次数

在Eclipse中重构"包结构"以将包的子包重定位到其父包

在Eclipse的"Package Explorer"中,假设我有一个这样的包列表:

  • com.animal.dog
  • com.animal.cat
  • com.animal.frog

如果我想重构这个包结构,那么最终的包结构就像

  • com.dog
  • com.cat
  • com.frog

所以基本上删除父包并将子包附加到其祖父母.我在"com.animal"包中有很多子包,我想尽可能避免手动执行此操作,然后在各处更改包导入.

java eclipse refactoring packages package-structuring

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

使用Action词典而不是switch语句

我只是回顾一些旧的代码(有一些空闲时间),我注意到一个相当冗长的switch语句.由于获得了新知识,我已经以下面的形式重构了它:

private Dictionary<string, Action> createView
    {
        get
        {
            return new Dictionary<string, Action>()
            {
                {"Standard", CreateStudySummaryView},
                {"By Group", CreateStudySummaryByGroupView},
                {"By Group/Time", CreateViewGroupByHour}
            };
        }
    }
Run Code Online (Sandbox Code Playgroud)

你会考虑这个好习惯,还是仅仅是一个超级丰富和不必要的案例?我渴望确保我学到的新技术,仅仅为了它而不是聪明,并且它们实际上为代码增加了好处.

谢谢.

c# polymorphism refactoring conditional-statements

23
推荐指数
3
解决办法
1万
查看次数

使用词典重构Ruby on Rails i18n YAML文件

这个 StackOverflow问题给了我一些关于Rails i18n文件的良好结构的思考,所以我想我会分享另一个结构来重构Rails i18n yml文件供您考虑/批评.

鉴于我想

  1. 保持默认的应用程序结构,这样我就可以t('.some_translation')在我的视图中使用简写的"懒惰"查找,并且知道在应用程序中使用翻译的地方,
  2. 避免尽可能多的字符串重复,特别是使用不仅相同的单词,但也有相同的上下文/含义,
  3. 只需更改一次密钥就可以反映出它引用的所有地方,

对于config/locales/en.yml文件,看起来像这样:

activerecord:
  attributes:
    user:
      email: Email
      name: Name
      password: Password
      password_confirmation: Confirmation
  models:
    user: User
users:
  fields:
    email: Email
    name: Name
    password: Password
    confirmation: Confirmation
sessions:
  new:
    email: Email
    password: Password
Run Code Online (Sandbox Code Playgroud)

我可以看到存在重大的重复,并且诸如"电子邮件"和"密码"之类的词语的上下文是明确的并且在它们各自的视图中具有相同的含义.如果我决定将"电子邮件"更改为"电子邮件",那么必须去更改它们会有点烦人,所以我想重构字符串以引用某种字典.那么,如何使用&这样的锚点将字典哈希添加到文件的顶部:

dictionary:
  email: &email Email
  name: &name Name
  password: &password Password
  confirmation: &confirmation Confirmation

activerecord:
  attributes:
    user:
      email: *email
      name: *name
      password: *password
      password_confirmation: *confirmation
  models:
    user: User
users:
  fields:  
    email: *email
    name: *name …
Run Code Online (Sandbox Code Playgroud)

refactoring yaml structure ruby-on-rails internationalization

23
推荐指数
2
解决办法
8465
查看次数