我得到了一個我製作了靜態的類,但這是一個糟糕的選擇嗎?它應該是一個非靜態類嗎?使用靜態或非靜態類
我想在我的班級中設置兩個值。
當你給屬性值設置它們並獲取它們時會有某種衝突嗎?有沒有什麼機會?如果另一個用戶具有相同的目標。
我有一個頁面調用這個類。 一位用戶點擊該頁面,發生這種情況。
- 設置屬性的計算
- 運行的空隙來計算兩個屬性
- 「也許一些其他的功能,運行和需要一些時間」
- 獲取兩個屬性的值
但是如果其他用戶擊中頁面並設置其他值並使第一個用戶的值不正確,該怎麼辦?我想這可能嗎?
我想到了一些其他的選擇是要麼
- 發送所有屬性到空隙作爲參數,並與我的兩個值,我需要回到一個新的類。 (不要將它們存儲爲靜態屬性,在使用之前可以由其他用戶更改)。
- 使用屬性(可能稱爲BreakTime)創建一個新類。將其作爲一個參數發送給void。計算後返回。
- 或者你告訴我什麼是最好的選擇! :)
這裏怎麼看起來:
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;
}
}
簡單地說,如果你需要使一個類是靜態的,而不是如果可能的話。我懷疑這是否是這種情況。通常這應該很少發生(例如,在包含擴展方法的類上)。 – HimBromBeere
@HimBromBeere,我會遵循這樣的規則:「如果可以的話,讓一個類變成靜態的,如果你有狀態,那麼你就不能」。 –
@DavidArno嗯,你可以爲靜態對象提供(單一)狀態,但是它的設計很糟糕。然而,「當你可以」的時候,我認爲它的語法正確。 – HimBromBeere