gpt4 book ai didi

c# - 用Resharper重构,引入了bug,为什么?

转载 作者:行者123 更新时间:2023-11-30 14:46:20 25 4
gpt4 key购买 nike

我有一个我认为带有 if 语句的方法,我决定在 Resharper 的帮助下重构它,后来发现它是我遇到很多错误的原因。

private bool isValid(User user)
{
if (user == null)
return false;
if (user.IsBot)
return true;
if (user.GetClient() == null)
return false;
if (user.GetClient().GetData() == null)
return false;
if (user.GetClient().GetData().CurrentRoomId != _room.RoomId)
return false;
return true;
}

我把它重构成了这个

private bool isValid(User user)
{
return user?.GetClient() != null && user.GetClient().GetData() != null && user.GetClient().GetData().CurrentRoomId == _room.RoomId;
}

将重构后的版本返回到原始版本后,所有错误都消失了。仅出于 self 提升的目的,有人可以告诉我我做错了什么吗?我什么都看不到,但很明显它破坏了很多东西,所以它一定有所不同。

最佳答案

原始版本更具可读性,并且在重构期间引入了一个错误。缺少 IsBot 检查。

您可以将方法重构为:

private bool isValid(User user)
{
if (user == null)
return false;
if (user.IsBot)
return true;
return user.GetClient()?.GetData()?.CurrentRoomId == _room.RoomId;
}

仍然可读,但更短更切题。

关于c# - 用Resharper重构,引入了bug,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49571470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com