원활한 API로 개발자가 라이브러리를 즐겨 사용할 수 있습니다.
몇 주 전에 구축한 좋은/다시 사용할 수 있는 종류로 돌아왔지만, 그것을 어떻게 사용해야 할지 몰랐다.기점으로 삼을 만한 뚜렷한 것은 없습니까?
따라서 문서를 보기로 결정했지만 라이브러리를 사용하는 데 필요한 것을 찾아내는 데 1시간밖에 걸리지 않았습니다!
나는 이미 그곳에 여러 번 가 보았다.
저는 전체 직업 생활에서 중용 가능한 부품을 구축하여 100% 간단명료하고 쉽게 사용할 수 있는 방법이 있는지 생각해 왔습니다.당신이 정확하게 사용하도록 지도하는 것들
우리들은 가장 좋은 사람에게 배우게 하다
우리들은 가장 좋은 사람에게 열심히 공부합시다.가장 사용하기 쉬운 도구.다음은 개인적으로 재미있는 몇 가지 도구입니다.
JQuery는 더 이상 사용하지 않으며 선택에 따라 사용하지 않습니다.그러나 JQuery가 DOM 사용을 더욱 즐겁게 하는 데는 당시 로컬 도구에 비해 동의합니다.
그렇다면 이 모든 도구들의 공통점은 무엇입니까?무엇이 그것들을 이렇게 쉽게 사용합니까?
원활한 API입니다.
응?Fluent API란 무엇입니까?
용어'유창'의 의미는'유창한 API'가 어느 정도 (구어) 언어와 관련이 있다는 것이다.예를 들어, 너는 유창한 영어를 말할 수 있다.
유창한 인터페이스는 코드를 어떻게 쉽게 자연스럽게 읽는지, 마치 책을 읽는 것처럼 프로그래밍 스타일이다.
가독성
예:NET Core 에서 이러한 코드를 발견할 수 있습니다.
app.UseDeveloperExceptionPage()
.UseDatabaseErrorPage();
이것은 쉽게 이해하고 읽을 수 있다.개발자 이상 페이지를 사용하려고 합니다. (이 페이지는 개발자에게 좋은 디버깅 정보를 제공합니다.)데이터베이스 오류가 발생했을 때, 특수한 오류 페이지를 사용하고 싶습니다.
새 잠금 해제 방법
다른 예를 살펴보겠습니다.
services
.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
이 예에서 AddMvc
방법을 사용하면 이 특정한 상하문에서만 의미가 있는 다른 방법에 대한 접근을 해제합니다.
이것은 나에게 있어서 유창한 인터페이스의 가장 강력한 부분이다. 그것은 당신이 현재 환경에서 의미 있는 것만 사용할 수 있도록 허락한다.
기타 이점
fluent API가 올바르게 완료되면 다음을 수행할 수 없습니다.
예:NET Core 에서 이러한 코드를 발견할 수 있습니다.
app.UseDeveloperExceptionPage()
.UseDatabaseErrorPage();
이것은 쉽게 이해하고 읽을 수 있다.개발자 이상 페이지를 사용하려고 합니다. (이 페이지는 개발자에게 좋은 디버깅 정보를 제공합니다.)데이터베이스 오류가 발생했을 때, 특수한 오류 페이지를 사용하고 싶습니다.새 잠금 해제 방법
다른 예를 살펴보겠습니다.
services
.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
이 예에서 AddMvc
방법을 사용하면 이 특정한 상하문에서만 의미가 있는 다른 방법에 대한 접근을 해제합니다.
이것은 나에게 있어서 유창한 인터페이스의 가장 강력한 부분이다. 그것은 당신이 현재 환경에서 의미 있는 것만 사용할 수 있도록 허락한다.
기타 이점
fluent API가 올바르게 완료되면 다음을 수행할 수 없습니다.
services
.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
fluent API가 올바르게 완료되면 다음을 수행할 수 없습니다.
실제 라이브러리에 적용
상기 이유(그리고 제가 링크된 게시물의 이유)로 작성Coravel할 때 fluent API를 사용했습니다.나는 이것이 사람들이 그것을 사용하는 주요 원인 중의 하나라고 생각한다. 그것은 사용하기 쉽다.
예를 들어, 당신은 이 코드가 무엇을 하려고 하는지 알 수 있습니까?
이것이 바로 유창한 스타일로 작성된 코드가 얼마나 이해하기 쉬운가이다.의심할 여지없이 이 코드의 작용.
마법사와 유사한 코드 완성
Visual Studio 코드에서 Coravel을 사용하는 경우:
누군가가 어떤 일을 안배하려고 할 때, 그들은 새로운 방법을 사용할 수 있다.이러한 방법은 일부 내용을 스케줄링하는 상하문에서만 사용할 수 있다.
이곳에는 다른 상하문 중의 방법의 유실이 없다.
주파수를 선택하면 이 방법이 사라지고 새 선택 그룹에 접근할 수 있습니다.
이제 원활한 API를 구축합시다!
그래서 궁금해요. - 제가 어떻게 만들어야 돼요?
기본적인 fluent API를 구축하는 것은 사실상 매우 간단하다.관건적인'기교'는 클래스의 방법으로 하나의 인터페이스를 되돌릴 수 있으며, 이 인터페이스는 호출자가 사용할 수 있는 방법을 제한한다.
다음은 작업 예제입니다.
public class MyFluentClass : ICalculation, IResult
{
private int _value;
private int _result;
private MyFluentClass() { }
public static ICalculation WithValue(int value)
{
return new MyFluentClass
{
_value = value
};
}
public IResult Add(int toAdd)
{
this._result = this._value + toAdd;
return this;
}
public IResult Subtract(int toSubtract)
{
this._result = this._value - toSubtract;
return this;
}
public int Result() => this._result;
}
public interface ICalculation
{
IResult Add(int toAdd);
IResult Subtract(int toSubtract);
}
public interface IResult
{
int Result();
}
참고 사항:
Visual Studio 코드에서 Coravel을 사용하는 경우:
누군가가 어떤 일을 안배하려고 할 때, 그들은 새로운 방법을 사용할 수 있다.이러한 방법은 일부 내용을 스케줄링하는 상하문에서만 사용할 수 있다.
이곳에는 다른 상하문 중의 방법의 유실이 없다.
주파수를 선택하면 이 방법이 사라지고 새 선택 그룹에 접근할 수 있습니다.
이제 원활한 API를 구축합시다!
그래서 궁금해요. - 제가 어떻게 만들어야 돼요?
기본적인 fluent API를 구축하는 것은 사실상 매우 간단하다.관건적인'기교'는 클래스의 방법으로 하나의 인터페이스를 되돌릴 수 있으며, 이 인터페이스는 호출자가 사용할 수 있는 방법을 제한한다.
다음은 작업 예제입니다.
public class MyFluentClass : ICalculation, IResult
{
private int _value;
private int _result;
private MyFluentClass() { }
public static ICalculation WithValue(int value)
{
return new MyFluentClass
{
_value = value
};
}
public IResult Add(int toAdd)
{
this._result = this._value + toAdd;
return this;
}
public IResult Subtract(int toSubtract)
{
this._result = this._value - toSubtract;
return this;
}
public int Result() => this._result;
}
public interface ICalculation
{
IResult Add(int toAdd);
IResult Subtract(int toSubtract);
}
public interface IResult
{
int Result();
}
참고 사항:
public class MyFluentClass : ICalculation, IResult
{
private int _value;
private int _result;
private MyFluentClass() { }
public static ICalculation WithValue(int value)
{
return new MyFluentClass
{
_value = value
};
}
public IResult Add(int toAdd)
{
this._result = this._value + toAdd;
return this;
}
public IResult Subtract(int toSubtract)
{
this._result = this._value - toSubtract;
return this;
}
public int Result() => this._result;
}
public interface ICalculation
{
IResult Add(int toAdd);
IResult Subtract(int toSubtract);
}
public interface IResult
{
int Result();
}
WithValue
반환 인터페이스ICalculation
.이것이 바로 호출자가 사용할 수 있는 방법을 제한하기 시작한 이유다.Add
및 Subtract
반환 인터페이스IResult
.이것이 바로 쇠사슬을 풀기 위한 다음 일련의 방법(마침 Result
이다.결론
본문을 읽어주셔서 감사합니다. - 저는 당신이 새로운 것을 배우고 그 내용을 좋아하길 바랍니다!
그나저나 이것은 나의 시리즈 문장인'지금까지 내가 코라벨을 구축하는 데 배운 것'의 두 번째 부분이다.다음은 이 시리즈의 다른 부분입니다.
Part 1 - What I've Learned So Far Building Coravel (Open Source .NET Core Tooling)
이 글은 builtwithdot.net's blog에 처음 등장했다.
소프트웨어 개발 직업 안내
이메일 시사 통신, 나는 구독자의 질문에 대답하고 다음과 같은 주제에 대해 건의를 제공할 것이다.
✔ 소프트웨어 개발자의 일반적인 단계는 무엇입니까?
✔ 내가 어느 단계에 처해 있는지 어떻게 알겠는가?나는 어떻게 다음 단계에 들어갑니까?
✔ 무엇이 기술 지도자입니까? 저는 어떻게 기술 지도자가 됩니까?
재밌게 들리시나요?Join the community!
Reference
이 문제에 관하여(원활한 API로 개발자가 라이브러리를 즐겨 사용할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/jamesmh/fluent-apis-make-developers-love-using-your-libraries-2d7c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이메일 시사 통신, 나는 구독자의 질문에 대답하고 다음과 같은 주제에 대해 건의를 제공할 것이다.
✔ 소프트웨어 개발자의 일반적인 단계는 무엇입니까?
✔ 내가 어느 단계에 처해 있는지 어떻게 알겠는가?나는 어떻게 다음 단계에 들어갑니까?
✔ 무엇이 기술 지도자입니까? 저는 어떻게 기술 지도자가 됩니까?
재밌게 들리시나요?Join the community!
Reference
이 문제에 관하여(원활한 API로 개발자가 라이브러리를 즐겨 사용할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jamesmh/fluent-apis-make-developers-love-using-your-libraries-2d7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)