我在重构我的 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包装在另一个函数中,但最重要的是,我觉得我在这里缺少一个基本概念......
我有一种情况,我声明一个方法说
public String getData(WebDriver driver, int iRowNumber)
Run Code Online (Sandbox Code Playgroud)
我从许多其他测试用例方法中调用此方法。现在我觉得有必要更改参数的数量并包含第三个参数。显然,前面的所有测试用例方法都会抛出错误。我该如何处理这种情况?我不想创建另一个具有相同名称和不同数量参数(多态性)的方法,因为我也必须在之前的测试方法中使用修改后的方法。
有什么办法可以解决这个问题吗?
我有这两个功能
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)
请帮助一下.
谢谢
我想重构一个方法,但我不太清楚如何,但我知道你可以做到.
我目前的方法:
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) 我正在尝试生成所有扑克牌(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) 我试图重构代码,我遇到了这段代码.你能否在其中建议任何重构,请说明你使用的折射.
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) 我有这段代码作为 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)
获取配置值: …
这段代码:
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) 我正在重构一些Java代码,我的目的不是根本不更改行为/流程,而只是对其进行清理,将其划分为方法等。
最后,我想做的是确保我的更改确实只是美学上的,并且行为/流程没有更改。
我知道可以通过编写全面的单元测试来“实现”,但是我想知道是否存在一些Java代码分析实用程序可以用来比较更改前后的代码流,因为从理论上讲,这听起来像这是可能的。
任何帮助表示赞赏!
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新手怎么知道(当他试图重新编写自己的代码时)哪些问题是真正的问题,哪些是非问题?
refactoring ×10
c# ×5
java ×3
algorithm ×1
arrays ×1
flow ×1
html ×1
if-statement ×1
javascript ×1
methods ×1
node.js ×1
overloading ×1
overriding ×1
python ×1
resharper ×1
ruby ×1