在OOP和所有編程中,我知道一個明確的規則是一個方法只應執行一個特定的任務,如果需要執行另一個任務,則應該創建另一個方法。我的問題是,在我的情況下這似乎毫無意義,因爲它只是使用更多的代碼,而不是一個大的方法。OOP慣例 - 單一函數方法
這裏有2種方式,其中我的代碼可以構造(其中一個遵循標準慣例,而另一個沒有,但可以節省代碼)
情景1(2種方法)
提高統計方法
public void increaseStat(short value, string stat)
{
switch (stat)
{
case "stamina":
if (staminaCheck.Checked == true)
{
stamina += value;
staminaText.Text = Convert.ToString(stamina);
}
staminaCheck.Checked = false;
break;
//There are 5 other similar cases for different stats but to save time I removed them
}
和減小stat法
public void decreaseStat(short value, string stat)
{
switch (stat)
{
case "stamina":
if (staminaCheck.Checked == true)
{
stamina -= value;
staminaText.Text = Convert.ToString(stamina);
}
staminaCheck.Checked = false;
break;
//There are 5 other similar cases for different stats but to save time I removed them
}
正如你所看到的代碼除了是1而不是 - 的操作完全一樣。因此,而不是複製所有的代碼轉化爲規範起見,另一種方法,我決定做這個
方案2(1種大的方法,從而能夠解決增加和減少)
public void alterStat(short value, string stat, bool operator)
{
switch (stat)
{
case "stamina":
if (staminaCheck.Checked == true)
{
if (Operator == true) stamina -= value;
else stamina += value
staminaText.Text = Convert.ToString(stamina);
}
staminaCheck.Checked = false;
break;
//There are 5 other similar cases but to save time I removed them
}
這樣我加入了2個額外的通過添加一個簡單的if語句將行分解成每種情況,但是保存了正被複制的代碼的負載。
我只是想讓你知道這是否會被視爲良好的編程習慣。
謝謝你的時間。
'var delta = Operator == true? -1:1;耐力+ =增量*值;' – zerkms
爲什麼停在那裏?充足的理由使用'void adjustStamina(int by)' –
你不能簡單地提供一個負值來減少項目嗎?像DateTime.AddDays(-5)。 –