最近,當我通過一個項目源時,我遇到了類似下面的聲明。在聲明中使用=>操作符的好處
public bool isRestricted => false;
任何人都可以簡單介紹一下,使用這些語句有什麼好處。 在此先感謝。
最近,當我通過一個項目源時,我遇到了類似下面的聲明。在聲明中使用=>操作符的好處
public bool isRestricted => false;
任何人都可以簡單介紹一下,使用這些語句有什麼好處。 在此先感謝。
這是一個很好的表達功能,真正適合具有很多小功能的對象。例如代表業務規則。它使這些類型的對象變小,易於閱讀,便於維護和理解。說我認爲它僅僅是語法糖而不是真正有用的是錯誤的 - 如果表達體是那樣的話,那麼也可以考慮其他幾個特徵,比如屬性,汽車屬性等等。表達的身體是計算對象確實有用,可以考慮下面的代碼:
public class PriceCalculator
{
public double Price(WomensFashionItem item)
{
return item.Cost * 1.2;
}
public double Price(MensFashionItem item)
{
return item.Cost * 1.33 + 10;
}
public double Price(ToyItem item)
{
if (item.Source == "Taiwan")
{
return item.Cost * 2.2;
}
else
{
return item.Cost * 1.5;
}
}
}
通過採用表達的身體,就可以減少線路數量,在我看來更容易在這裏展示我們的意圖。
public class PriceCalculator
{
public double Price(WomensFashionItem item) => item.Cost * 1.2;
public double Price(MensFashionItem item) => item.Cost * 1.33 + 10;
public double Price(ToyItem item) => item.Source == "Taiwan" ? item.Cost * 2.2 : item.Cost * 1.5;
}
所以從24條線,6,並具有所有的業務規則一眼視圖可真厲害。我可以輕鬆地將此代碼顯示給域專家或業主,他們應該能夠理解正在發生的事情並提供反饋。
現在,表達式體可能不如泛型類型系統那麼強大,但它們當然可以成爲工具箱中的一個很好的工具,用於將單行或計算屬性轉換爲小而易於理解的成員。
公平。最後的聲明可能已經在第一個代碼已經簡化:) –
此外,我會使用=> item.Cost *(item.Source ==「Taiwan」?2.2:1.5):) –
你是對的,你可以使用第一個是條件運算符,但是我做了其他的操作來使差異更清楚,因爲條件運算符本質上是一個表達式。在最後一條評論中,您可以從條件中返回因素,但在這裏我確實更喜歡計算的顯式返回,至少對於此類業務邏輯對象而言,我在此選擇清晰度,但出於不同的原因。 :) – Espen
它只是語法上的糖而不是'public bool isRestricted {get {return false; }}' – Rob
它提供了更簡潔,更簡潔的結構,它解釋了基本思想或邏輯http://softwareengineering.stackexchange.com/a/194010/242481 – Pravin
感謝Rob。所以這樣做沒有其他增加的專業。 – 17CrazyBrain