我有一个像下面的方法,有没有什么办法重构,更清洁的方式,以便我可以使它在更少的代码行中,例如去除if/for循环,就像那样使方法更少的代码行
public void CheckProductExistThenAddToCart(CartItem item)
{
if (CartItems.Count == 0) AddToCart(item);
bool itemFound = false;
foreach (var cartItem in CartItems)
{
if (cartItem.ProductId.Equals(item.ProductId))
{
itemFound = true;
cartItem.Qty += item.Qty;
break;
}
}
if (!itemFound)
{
AddToCart(item);
}
}
这看起来会更好放在http://codereview.stackexchange.com – Gjeltema
使用LINQ,正如Reed Copsey的答案中所给出的,会显着减少你的代码行。不过要注意的是,更少的代码行实际上可以非常严重地降低代码的可读性/可维护性。换句话说:如果一行代码需要文档,以便理解它的功能,而两行代码将不言自明,请转至两行代码。 “每条线路的大部分功能都没有支付。”您支付正确,可读和可维护的代码。 –
@JanDoerrenhaus真的 - 虽然我认为我的版本比原来的版本更具可读性和可维护性... –