标签: refactoring

将几个元素传递给方法

我有很少的方法来接受固定大小的集合(例如2,3,5).而我无法确定哪种方式更好:

public void Foo(IEnumerable<Object> objects)
{
    if(objects.Count() != 3)
    {
        throw new Exception()
    }
    // actions
}

public void Foo(Object objectA, Object objectB, Object objectC)
{
    // actions
}
Run Code Online (Sandbox Code Playgroud)

每个选项都有最终的+\ - 吗?

c# refactoring

0
推荐指数
1
解决办法
74
查看次数

重构一个ruby方法

我似乎用以下模式编写了很多方法,似乎应该有更好的方法.这个或更好的做法是否有单线程?

def combine_roster(roster)
  rstr = []
  roster.each do |r|
    rstr << r.user
  end
  rstr
end
Run Code Online (Sandbox Code Playgroud)

ruby methods refactoring ruby-on-rails

0
推荐指数
1
解决办法
92
查看次数

Django:将模型重构为子模块

在一个应用程序中的models.py变得很大之后,我尝试将一些类移到子包中。

旧的结构是这样的:

# File: assets/models.py
class Asset(...):
    # lots of irrelevant code

# File: widgets/models.py
from assets.models import Asset
class Video(...):
    asset = models.ForeignKey(Asset)
Run Code Online (Sandbox Code Playgroud)

这项工作没有问题,因此,我不再赘述该结构的更多细节。

我现在尝试做的是将Asset类移到子模块中。现在的结构如下:

# File: assets/models/__init__.py (of course I deleted the old models.py)
from .assets import Asset

# File: assets/models/assets.py
class Asset(...):
    # lots of irrelevant code

# File: widgets/models.py
from assets.models.assets import Asset
class Video(...):
    asset = models.ForeignKey(Asset)
Run Code Online (Sandbox Code Playgroud)

不知何故,这是行不通的,而且我无法弄清楚到底是什么引起了麻烦。我得到的错误是这样的:

widgets.video:“asset”与model关联,尚未安装或抽象

python django refactoring django-models

0
推荐指数
1
解决办法
811
查看次数

"重构"是什么意思?

有人可以向我解释一下"重构"或"重构"是什么意思吗?

我认为这个主题过于宽泛,无法涵盖每一个细节,但有人可以提供一个简单的术语解释吗?

c# theory refactoring

0
推荐指数
1
解决办法
656
查看次数

达到外部价值?

spriteManager是我拥有的外部类的一个实例,要访问PlayerHelath和selectedFrameOffset,我必须重新开始:spriteManager.多次.

    if (spriteManager.PlayerHealth == 3)
        spriteManager.selectedFrameOffset = 0;
    else if (spriteManager.PlayerHealth == 2)
        spriteManager.selectedFrameOffset = 30;
    else if (spriteManager.PlayerHealth == 1)
        spriteManager.selectedFrameOffset = 60;
    else if (spriteManager.PlayerHealth == 0)
        spriteManager.selectedFrameOffset = 90;
Run Code Online (Sandbox Code Playgroud)

有没有机会我可以参考spriteManager的使用.只有一次并最终得到这个:代码,以获得更多的可读性?

    if (PlayerHealth == 3)
        selectedFrameOffset = 0;
    else if (PlayerHealth == 2)
        selectedFrameOffset = 30;
    else if (PlayerHealth == 1)
        selectedFrameOffset = 60;
    else if (PlayerHealth == 0)
        selectedFrameOffset = 90;
Run Code Online (Sandbox Code Playgroud)

c# refactoring if-statement

0
推荐指数
1
解决办法
51
查看次数

从输入字符串的组合生成字符串

我有一个混乱的方法,它生成一个三个字符串的名称.这三个字符串可以为null.我要检查每个可能的组合并根据给定的可用值创建一个字符串.结果名称中的每个变量都没有固定位置/布局,这取决于所有字符串的可用性.

我的方法现在看起来像这样:

    private String GetName(string variable, string label, string dimension)
    {
        string result = String.Empty;
        if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(variable) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}] ({2})", label, dimension, variable);
        }
        else if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}]", label, dimension);
        }
        else if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(variable))
        {
            result = String.Format("{0} ({1})", label, variable);
        }
        else if (!String.IsNullOrEmpty(label))
        {
            result = String.Format("{0}", label);
        }
        else if (!String.IsNullOrEmpty(variable) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}]", variable, dimension);
        }
        else …
Run Code Online (Sandbox Code Playgroud)

c# refactoring

0
推荐指数
1
解决办法
81
查看次数

我如何重构这些linq属性?

我有4个类属性,具有相似的签名,但具有不同的linq属性.我如何创建一个委托或其他东西来清理它?

例如:

    public IEnumerable<SelectListItem> DistinctUsers
    {
        get
        {
            var list = TraceLogs.OrderBy(x => x.Username).Select(x => x.Username).Distinct();
            return (from s in list select new SelectListItem { Value = s, Text = s }
           );
        }
    }

    public IEnumerable<SelectListItem> DistinctMethods
    {
        get
        {
            var list = TraceLogs.OrderBy(x => x.Method).Select(x => x.Method).Distinct();
            return (from s in list select new SelectListItem { Value = s, Text = s }
           );
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# linq refactoring

0
推荐指数
1
解决办法
91
查看次数

在Scala中使用延迟评估时如何摆脱虚拟变量?

我在斯卡拉一个新手,并与懒惰的评价玩弄和这个问题跌跌撞撞:如果我想使懒惰的评估VALÇ作品,我写的虚拟变量b的声明之前Ç,这我考虑太多样板.我尝试在没有初始初始化的情况下声明ab lazy val,但编译器抱怨.如果我写的东西:lazy val c = a:Double, b:Int也不起作用.

有没有办法摆脱这些虚拟变量?我能以更优雅的方式重构此代码吗?

  var a = 0d;                                     //> a  : Double = 0.0
  var b = 0;                                      //> b  : Int = 0
  lazy val c = a / b                              //> c  : Double = <lazy>
  //some other code...
  a = math.Pi
  b = -1
  (1 to 10).foreach(x => println(f"$x, ${x * c}%.8s"))
                                                  //> 1, -3.14159
                                                  //| 2, -6.28318
Run Code Online (Sandbox Code Playgroud)

refactoring scala lazy-evaluation dummy-data

0
推荐指数
1
解决办法
144
查看次数

我应该如何重写此代码以不使用feval?

我最近在应用数值方法课上完成了一个作业集,并且做得很好.但是,我的教授做了一个说明,我不应该使用feval()函数,因为它已经过时了.

我只是想知道我应该使用什么.

这是有问题的代码

%% function file
function E=euler(f,a,b,ya,h)
    t=a:h:b;
    y(1)=ya;
    for i=1:length(t)-1
        y(i+1) = y(i) + h*(feval(f,t(i),y(i)));
    end
     t = t';
     y = y';
     E=t;
     plot(t,y)
     xlabel('t')
     ylabel('y') 
end



%% script file    

h = 0.01;
figure(2)
y1=euler(f, a, b, ya, h);

h = 0.001;
figure(3)
y2=euler(f, a, b, ya, h);

h = 0.0001;
figure(4)
y3=euler(f, a, b, ya, h);
Run Code Online (Sandbox Code Playgroud)

如何在不使用feval函数的情况下编写此代码以正确评估Euler函数.

matlab refactoring

0
推荐指数
1
解决办法
96
查看次数

重构Java以获取字符串长度

我开始使用Java并尝试找到一种简洁的方法来重构下面的代码,以便我可以将firstName变量设置为字符串并在同一行中获取并将firstNameLength字符串长度设置为整数.

String firstName = "Boris";
int firstNameLength = firstName.length();
Run Code Online (Sandbox Code Playgroud)

我一直在尝试以下代码的变体,但无济于事!

int newAge = String firstName = "Boris".length();
Run Code Online (Sandbox Code Playgroud)

java string int refactoring

0
推荐指数
1
解决办法
80
查看次数