我得到了一个静态类,但这是一个糟糕的选择吗?它应该是一个非静态类吗?
我想在班上设置两个值。
当您给出属性值时,在设置它们和获取它们时会有某种冲突的可能性吗?如果另一个用户有相同的目标。
我有一页叫这门课的。一个用户点击页面就会发生这种情况。
但是,如果另一个用户点击该页面并设置其他值并使第一个用户的值不正确怎么办。我想这是可能的?
我想过的其他选择是
以下是它的外观:
public static class BreakTimeCalculator
{
public static int BreakFromSec { get; private set; }
public static int BreakUntilSec { get; private set; }
public static int CustomBreakSec { get; set; }
public static int FromSec { get; set; }
public static int UntilSec { get; set; }
public static int Equlizer { get; set; }
public static void CalculateBreakFromAndBreakeUntil()
{
var taskLength = UntilSec - FromSec;
var middleOfTask = FromSec + (taskLength / 2);
var secondsToMoveLeft = middleOfTask % 300;
var amountEqualizers = CustomBreakSec / Equlizer;
var fiftyFifty = amountEqualizers % 2 == 0;
var leftSideEqualizers = fiftyFifty ? amountEqualizers / 2 : (amountEqualizers / 2) + 1;
BreakFromSec = middleOfTask - secondsToMoveLeft - (leftSideEqualizers * Equlizer);
BreakUntilSec = BreakFromSec + CustomBreakSec;
}
}发布于 2015-12-10 09:07:58
永远不要创建静态状态,除非你真的,真的必须这样做,因为如果你真的这样做了,你就会为摔倒做好准备。您使测试变得更加困难,并且使线程冲突(如您所描述的)发生的可能性更高。
如果必须在类中设置状态,然后调用方法,而不只是将值作为参数传递给方法,则将其设置为非静态类。另外,最好通过构造函数传递值,而不是使用属性。
尽管如此,我对您的问题的方法是创建一个POCO来保存结果数据,并有一个静态的方法来进行计算。使用C# 6语法,如下所示:
public class BreakTimeResult
{
public BreakTimeResult(int breakFromSec, int breakUntilSec)
{
BreakFromSec = breakFromSec;
BreakUntilSec = breakUntilSec;
}
public int BreakFromSec { get; }
public int BreakUntilSec { get; }
}
public static class BreakTimeCalculator
{
public static BreakTimeResult CalculateBreakFromAndBreakeUntil(int customBreakSec,
int fromSec,
int untilSec,
int equlizer)
{
var taskLength = untilSec - fromSec;
var middleOfTask = fromSec + (taskLength / 2);
var secondsToMoveLeft = middleOfTask % 300;
var amountEqualizers = customBreakSec / equlizer;
var fiftyFifty = amountEqualizers % 2 == 0;
var leftSideEqualizers = fiftyFifty
? amountEqualizers / 2
: (amountEqualizers / 2) + 1;
var breakFromSec = middleOfTask - secondsToMoveLeft - (leftSideEqualizers * equlizer);
var breakUntilSec = breakFromSec + customBreakSec;
return new BreakTimeResult(breakFromSec, breakUntilSec);
}
}https://stackoverflow.com/questions/34197568
复制相似问题