리팩토링을 하지 않을 때 일어나는 일
private readonly IMemoryCache _cache;
public object Modify(string code, bool Flag)
{
object result;
if (_cache.TryGetValue(code.ToLower(), out result))
{
return true;
}
return Flag;
}
이제 제가 매일 사용하는 언어는 C#이므로 여기에서 여러분이 인식하지 못할 수 있는 사항이 있을 수 있지만 이 스니펫에서 (제 생각에) 잘못된 모든 것을 깨고 수정하겠습니다!
반환 유형
정확히 왜 우리가 돌아오고 있습니까object
? 우리는 이것이 부울을 반환할 것이라는 것을 알고 있습니다. 어떻게 알 수 있습니까? 이 코드가 캐시에 있으면 true를 반환하거나 Flag
를 반환하지만 Flag
는 bool입니다.
메서드 이름
우리는 메서드를 간단하지만 가능한 한 설명적으로 만들려고 노력합니다Modify
는 간단합니다. 하지만 메서드 내부를 살펴보면 아무것도 수정되지 않았음을 알 수 있습니다(이제 이 함수를 호출하는 코드는 다른 클래스의 속성) 따라서 이 메서드 이름이 메서드 내부의 논리를 설명하지 않는다고 말할 수 있습니다.
이제 우리는 이 함수가 무엇을 하는지 자문해야 합니다. 코드에 대한 일종의 캐시를 확인하는 것입니다. 해당 코드가 캐시에 있으면 true를 반환하고 그렇지 않으면 플래그 값을 반환합니다. 아마도 CheckCacheForCode
와 같은 것일 수도 있습니다. 제가 아는 것은 Modify
보다 이 방법에 대해 훨씬 더 설명적인 이름이라는 것입니다.
매개변수
이것은 분명히 원래 매개변수의 이름이 아닙니다. 이 코드에 대해 설명하기 위해 이름을 난독화해야 했습니다. 이것은 OSS 라이선스가 없는 상용 소프트웨어이기 때문입니다. 하지만 이름의 정신을 포착하려고 노력했습니다.
여기서 빠른 제안 - 변수 이름에 대한 파스칼 케이스이므로 Flag
는 flag
가 됩니다.
첫 번째 줄
이제 이 줄은 한동안 C#을 만지지 않은 사람들에게는 명확하지 않을 수 있지만 다음과 같습니다.
object result;
우선 다시 object
로 - 그냥 멍청하게 만드세요! 그런데 여기서 이것을 정의하는 이유는 무엇입니까? 우리는 다음과 같이 할 수 있습니다.
_cache.TryGetValue(code.ToLower(), out var result)
그러나 다시 이 변수를 사용하지도 않으므로 폐기를 사용할 수 있습니다.
_cache.TryGetValue(code.ToLower(), out _)
다시 이 기능은 C#의 최신 기능이지만 거기에 있으므로 사용하십시오.
if 문
이제 남은 것은 다음과 같습니다.
if (_cache.TryGetValue(code.ToLower(), out _))
{
return true;
}
return Flag;
따라서 if 문을 제거할 수 있습니다.
return _cache.TryGetValue(code.ToLower(), out _) || Flag;
결과
우리는 다음에서 갔다:
private readonly IMemoryCache _cache;
public object Modify(string code, bool Flag)
{
object result;
if (_cache.TryGetValue(code.ToLower(), out result))
{
return true;
}
return Flag;
}
에게
public bool CheckCacheForCode(string code, bool flag)
{
return _cache.TryGetValue(code.ToLower(), out _) || flag;
}
코드에 대해 조금만 생각하면 됩니다.
읽어주셔서 감사합니다
제이
Reference
이 문제에 관하여(리팩토링을 하지 않을 때 일어나는 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/joro550/what-happens-when-we-dont-refactor-5d74
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우리는 메서드를 간단하지만 가능한 한 설명적으로 만들려고 노력합니다
Modify
는 간단합니다. 하지만 메서드 내부를 살펴보면 아무것도 수정되지 않았음을 알 수 있습니다(이제 이 함수를 호출하는 코드는 다른 클래스의 속성) 따라서 이 메서드 이름이 메서드 내부의 논리를 설명하지 않는다고 말할 수 있습니다.이제 우리는 이 함수가 무엇을 하는지 자문해야 합니다. 코드에 대한 일종의 캐시를 확인하는 것입니다. 해당 코드가 캐시에 있으면 true를 반환하고 그렇지 않으면 플래그 값을 반환합니다. 아마도
CheckCacheForCode
와 같은 것일 수도 있습니다. 제가 아는 것은 Modify
보다 이 방법에 대해 훨씬 더 설명적인 이름이라는 것입니다.매개변수
이것은 분명히 원래 매개변수의 이름이 아닙니다. 이 코드에 대해 설명하기 위해 이름을 난독화해야 했습니다. 이것은 OSS 라이선스가 없는 상용 소프트웨어이기 때문입니다. 하지만 이름의 정신을 포착하려고 노력했습니다.
여기서 빠른 제안 - 변수 이름에 대한 파스칼 케이스이므로 Flag
는 flag
가 됩니다.
첫 번째 줄
이제 이 줄은 한동안 C#을 만지지 않은 사람들에게는 명확하지 않을 수 있지만 다음과 같습니다.
object result;
우선 다시 object
로 - 그냥 멍청하게 만드세요! 그런데 여기서 이것을 정의하는 이유는 무엇입니까? 우리는 다음과 같이 할 수 있습니다.
_cache.TryGetValue(code.ToLower(), out var result)
그러나 다시 이 변수를 사용하지도 않으므로 폐기를 사용할 수 있습니다.
_cache.TryGetValue(code.ToLower(), out _)
다시 이 기능은 C#의 최신 기능이지만 거기에 있으므로 사용하십시오.
if 문
이제 남은 것은 다음과 같습니다.
if (_cache.TryGetValue(code.ToLower(), out _))
{
return true;
}
return Flag;
따라서 if 문을 제거할 수 있습니다.
return _cache.TryGetValue(code.ToLower(), out _) || Flag;
결과
우리는 다음에서 갔다:
private readonly IMemoryCache _cache;
public object Modify(string code, bool Flag)
{
object result;
if (_cache.TryGetValue(code.ToLower(), out result))
{
return true;
}
return Flag;
}
에게
public bool CheckCacheForCode(string code, bool flag)
{
return _cache.TryGetValue(code.ToLower(), out _) || flag;
}
코드에 대해 조금만 생각하면 됩니다.
읽어주셔서 감사합니다
제이
Reference
이 문제에 관하여(리팩토링을 하지 않을 때 일어나는 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/joro550/what-happens-when-we-dont-refactor-5d74
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이제 이 줄은 한동안 C#을 만지지 않은 사람들에게는 명확하지 않을 수 있지만 다음과 같습니다.
object result;
우선 다시
object
로 - 그냥 멍청하게 만드세요! 그런데 여기서 이것을 정의하는 이유는 무엇입니까? 우리는 다음과 같이 할 수 있습니다._cache.TryGetValue(code.ToLower(), out var result)
그러나 다시 이 변수를 사용하지도 않으므로 폐기를 사용할 수 있습니다.
_cache.TryGetValue(code.ToLower(), out _)
다시 이 기능은 C#의 최신 기능이지만 거기에 있으므로 사용하십시오.
if 문
이제 남은 것은 다음과 같습니다.
if (_cache.TryGetValue(code.ToLower(), out _))
{
return true;
}
return Flag;
따라서 if 문을 제거할 수 있습니다.
return _cache.TryGetValue(code.ToLower(), out _) || Flag;
결과
우리는 다음에서 갔다:
private readonly IMemoryCache _cache;
public object Modify(string code, bool Flag)
{
object result;
if (_cache.TryGetValue(code.ToLower(), out result))
{
return true;
}
return Flag;
}
에게
public bool CheckCacheForCode(string code, bool flag)
{
return _cache.TryGetValue(code.ToLower(), out _) || flag;
}
코드에 대해 조금만 생각하면 됩니다.
읽어주셔서 감사합니다
제이
Reference
이 문제에 관하여(리팩토링을 하지 않을 때 일어나는 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/joro550/what-happens-when-we-dont-refactor-5d74
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
if (_cache.TryGetValue(code.ToLower(), out _))
{
return true;
}
return Flag;
return _cache.TryGetValue(code.ToLower(), out _) || Flag;
우리는 다음에서 갔다:
private readonly IMemoryCache _cache;
public object Modify(string code, bool Flag)
{
object result;
if (_cache.TryGetValue(code.ToLower(), out result))
{
return true;
}
return Flag;
}
에게
public bool CheckCacheForCode(string code, bool flag)
{
return _cache.TryGetValue(code.ToLower(), out _) || flag;
}
코드에 대해 조금만 생각하면 됩니다.
읽어주셔서 감사합니다
제이
Reference
이 문제에 관하여(리팩토링을 하지 않을 때 일어나는 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joro550/what-happens-when-we-dont-refactor-5d74텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)