标签: refactoring

在不失去范围的情况下重构 Node.js 函数

我在重构我的 Node.js 应用程序时遇到问题。

考虑以下使用express的(非常假设的)示例,其中accessResource只是使用我无权更改的回调的任意函数的模拟。

var express = require('express');
var app = express();

app.get('/', function(request, response) {
  accessResource(request, response, function sendResponse(err, data) {
    if (err) {
      return response.status(500).send({"message": err});
    } else {
      return response.status(200).send({"message": data});
    }
  });
});

app.listen(8080);
Run Code Online (Sandbox Code Playgroud)

我想将sendResponse重构为一个独立的函数,以便我最终可以将其移动到自己的模块中。

app.get('/', function(request, res) {
  accessResource(request, response, sendResponse);
});

function sendResponse(err, data) {
    if (err) {
      return response.status(500).send({"message": err});
    } else {
      return response.status(200).send({"message": data});
    }
}
Run Code Online (Sandbox Code Playgroud)

现在显然这不再起作用,因为响应在sendResponse范围内不可用。

似乎我必须将sendResponse包装在另一个函数中,但最重要的是,我觉得我在这里缺少一个基本概念......

javascript refactoring node.js

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

更改方法签名的好习惯

我有一种情况,我声明一个方法说

public String getData(WebDriver driver, int iRowNumber)
Run Code Online (Sandbox Code Playgroud)

我从许多其他测试用例方法中调用此方法。现在我觉得有必要更改参数的数量并包含第三个参数。显然,前面的所有测试用例方法都会抛出错误。我该如何处理这种情况?我不想创建另一个具有相同名称和不同数量参数(多态性)的方法,因为我也必须在之前的测试方法中使用修改后的方法。

有什么办法可以解决这个问题吗?

java methods refactoring

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

如何使用不同的输入参数重载两个方法

我有这两个功能

private void calcResults()
{
   MakePath(id, results, _resultCount);
   MakePath(id, "XYZ", _resultSICount)
}

private string MakePath(string subFolder, object obj, int index)
{
    string dir = System.IO.Path.Combine(_outputDir, subFolder);
    string fileName = string.Format("{0} {1} {2}.xml",
           obj.GetType().Name, _dateTimeSource.Now.ToString(DATE_FORMAT), index.ToString());
    return System.IO.Path.Combine(dir, fileName);
}

private string MakePath(string subFolder, string tempFileName, int index)
{
    string dir = System.IO.Path.Combine(_outputDir, subFolder);
    string fileName = string.Format("{0} {1} {2}.xml",
           tempFileName, _dateTimeSource.Now.ToString(DATE_FORMAT), index.ToString());
    return System.IO.Path.Combine(dir, fileName);
}
Run Code Online (Sandbox Code Playgroud)

请帮助一下.

谢谢

c# refactoring overriding overloading

-1
推荐指数
1
解决办法
6936
查看次数

重构(简单)语句

我想重构一个方法,但我不太清楚如何,但我知道你可以做到.

我目前的方法:

public bool AdminShutdown(int accountID, int accountPin)
        {
            var status = false;
            if (accountID == AdminLogin && accountPin == AdminPin)
            {
                status = true;
            }

            return status;
        }
Run Code Online (Sandbox Code Playgroud)

我认为它应该是类似 var status = (accountID == AdminLogin) && (accountPin == AdminPin)但不起作用( Operator '&&' cannot be applied to operands of type 'bool' and 'int').

建议?

PS这段代码有用吗?

var tempReturnPerson = AccountHoldersList.Single((x => x.AccountNumber == accountId));
Run Code Online (Sandbox Code Playgroud)

代替:

public AccountHolders ReturnAccountInfo(int accountId)
        {
            //use linq to do this later
            var returnPerson = new …
Run Code Online (Sandbox Code Playgroud)

c# refactoring

-1
推荐指数
1
解决办法
62
查看次数

重构:在Ruby中消除两个

我正在尝试生成所有扑克牌(52张牌),这是我如何做到的:

ranks = '23456789TJQKA'.split ''
suits = 'SHDC'.split ''
my_deck = []

ranks.each do |r|
  suits.each { |s| my_deck << r+s }
end

my_deck # => ["2S", "2H", "2D", "2C", "3S", "3H", "3D", "3C", "4S", "4H", "4D", "4C", "5S", "5H", "5D", "5C", "6S", "6H", "6D", "6C", "7S", "7H", "7D", "7C", "8S", "8H", "8D", "8C", "9S", "9H", "9D", "9C", "TS", "TH", "TD", "TC", "JS", "JH", "JD", "JC", "QS", "QH", "QD", "QC", "KS", "KH", "KD", "KC", "AS", "AH", "AD", "AC"]
Run Code Online (Sandbox Code Playgroud)

我使用python的朋友告诉我这个:

[r+s …
Run Code Online (Sandbox Code Playgroud)

ruby python refactoring

-1
推荐指数
1
解决办法
45
查看次数

重构代码(如果没有)

我试图重构代码,我遇到了这段代码.你能否在其中建议任何重构,请说明你使用的折射.

private void setUpBag(String language){
    if(language.equals("english")){
        /* add letters with English distribution to bag */
    }
    else if(language.equals("french")){
        /* add letters with French distribution to bag */
    }
    else if(language.equals("russian")){
        /* add letters with Russian distribution to bag */
    }
    else{
        throw new IllegalArgumentException("Unknown language");
    }
}
Run Code Online (Sandbox Code Playgroud)

java refactoring

-1
推荐指数
1
解决办法
258
查看次数

如何重构这个 if-else 条件,使其更简洁、更高效?

我有这段代码作为 Azure 函数应用程序,我想知道如何最好地处理这if else部分。

有像 100 个不同客户名称的项目。

最好的方法是什么?

如果有人可以给我举个例子。

string customerName = string.Empty;
foreach( var doc in result )
{
    var data =(JObject)JsonConvert.DeserializeObject( doc.ToString() );
    if( (string)data["Project"] == "HPD_Oid" )
    {
        customerName = "OPPO";
    }
    else if( (string)data["Project"] == "HPD_Oreal" )
    {
        customerName = "RealMe";
    }
    else
    {
        customerName = "OnePlus";
    }
    string partitionkeyValue = string.Concat( (string)data["class"], "|", (string)data["Project"], "|", customerName );
    data.Add( new JProperty( "PartitionKey", partitionkeyValue ) );
Run Code Online (Sandbox Code Playgroud)

读取客户价值:

CustomerSection customer = GetConfiguration( context.FunctionAppDirectory, "CustomerSection.json" );
Run Code Online (Sandbox Code Playgroud)

获取配置值: …

c# refactoring if-statement

-1
推荐指数
1
解决办法
83
查看次数

什么是更简洁的计算偏移量的方法?

这段代码:

private int GetColumnToPopulate(int columnBase, int offset) {
    int duckbillColNum = 0;
    switch (columnBase) {
        case 0:
            duckbillColNum = 1;
            break;
        case 1:
            duckbillColNum = 5;
            break;
        case 2:
            duckbillColNum = 9;
            break;
        case 3:
            duckbillColNum = 13;
            break;
        case 4:
            duckbillColNum = 17;
            break;
        case 5:
            duckbillColNum = 21;
            break;
        case 6:
            duckbillColNum = 25;
            break;
        case 7:
            duckbillColNum = 29;
            break;
    }
    duckbillColNum += offset;
    return duckbillColNum;
}
Run Code Online (Sandbox Code Playgroud)

...很容易理解,但是冗长而笨重.我想精简它.我的伪代码是这样的:

int[] colBases
{
    0..7
}
int[] offsets
{
    1,5,9,13,17,21,25,29 …
Run Code Online (Sandbox Code Playgroud)

c# arrays algorithm refactoring

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

如何确保重构不会改变代码流?

我正在重构一些Java代码,我的目的不是根本不更改行为/流程,而只是对其进行清理,将其划分为方法等。

最后,我想做的是确保我的更改确实只是美学上的,并且行为/流程没有更改。

我知道可以通过编写全面的单元测试来“实现”,但是我想知道是否存在一些Java代码分析实用程序可以用来比较更改前后的代码流,因为从理论上讲,这听起来像这是可能的。

任何帮助表示赞赏!

java refactoring code-analysis flow

-2
推荐指数
1
解决办法
39
查看次数

我怎样才能看到森林里的树木?

Resharper发现1,953个问题与处女的asp.net MVC 3互联网应用程序(我甚至没有触摸代码 - 只看了它):

Common Practices and Code Improvements: 1024 issues
Constraints Violations: 150 issues
Potential Code Quality Issues: 252
Redundancies in Code: 77 issues
Redundancies in Symbol Declarations: 450 issues
Run Code Online (Sandbox Code Playgroud)

一个asp.net新手怎么知道(当他试图重新编写自己的代码时)哪些问题是真正的问题,哪些是非问题?

html c# resharper refactoring asp.net-mvc-3

-3
推荐指数
1
解决办法
111
查看次数