4개의 오류로 인해 Java API가 더 많은 사용자를 가질 수 없음

더 많은 사람들이 자바 API를 사용할 때 프로젝트가 늘어나고 더 좋은 엔지니어가 될 것입니다.너는 수입을 늘려 위대한 새로운 프로젝트에 가입할 가능성이 더 높다.그것은 사람들로 하여금 더욱 빨리 일을 완성하게 할 수 있다.그래서 이것은 윈윈하는 국면이다.
이미 API를 사용하고 있는 사람들을 붙잡고 더 많은 사람들을 끌어들이기 위해서는 네 가지 실수를 없애야 한다.

오류 1: 클라이언트에게 오류 코드를 작성하도록 강요합니다.


그의 우수한 저서20 API Paradoxes에서 아로스라프 투라흐는 개발자를 예술가에 비유했다.예술가와 개발자에게 그들의 예술적 아름다움은 매우 중요하다.우리는 코드를 보고 아름다움을 보는 것을 좋아한다.따라서 사용자에게 불쾌하거나 오류가 발생하기 쉬운 코드를 만들도록 강요할 때 그들은 실망하고 낙담할 것이다.
클라이언트가 오류 코드를 작성하도록 강요하는 API의 한 예는 인터페이스org.osgi.framework.Bundle입니다.그것은 우리에게 getLocation() 값을 되돌려 주는 방법 String 을 제공했다.문제는 이 값에 형식을 지정하지 않았고, 패키지 위치를 제공할 수 있는 유일한 방법이었다는 것이다.API에 형식이 지정되어 있지 않으므로 누구나 자유롭게 사용할 수 있습니다.
다음 그림과 같이 Equinox OSGi는 클라이언트가 파일을 찾기 위해 값을 확인해야 하는 방식으로 위치를 반환합니다.

이제 두 가지 질문이 있습니다.
1) API는 잠금을 생성하도록 강요합니다.클라이언트는 위치를 포맷하는 방법에 달려 있습니다.
2) API 는 버전 잠금을 생성하도록 강요합니다.버전에 따라 구현되는 형식이 다를 수 있습니다.
API 디자이너는 Bundle 인터페이스에 되돌아오기Path 또는 File를 추가하는 방법으로 이 문제를 해결할 수 있다.
또 다른 해결 방안은 getLocation() 방법을 최초로 Location 클래스로 되돌려주고 Location 필요한 속성을 가지게 하는 것이다.이 해결 방안은 반드시 반환해야 할 내용을 명확하게 실현하고 클라이언트에게 강제로 해석하지 않는다String.

오류 2: 용어의 일치성이 부족하다.


그중 하나3 principles that sustain great frameworks and libraries는 용이성에 관한 것이다.만약 당신의 API를 사용하기 어렵다면, 당신은 고객을 잃게 될 것이다.
명명 클래스와 인터페이스에 대한 표준이 없으면 API를 사용하기 어렵습니다.같은 의미의 다른 이름을 API에서 혼합하지 마십시오.
예를 들어 단어'fetch','retrieve','get'이다.그것들은 모두 같은 의미를 가지고 있다.그것들을 혼합하면 클라이언트는 검색 방법을 알 수 없을 것이다. 왜냐하면 때로는 '검색' 을 사용하고, 때로는 '가져오기' 를 사용하며, 때로는 '가져오기' 를 사용하기 때문이다.그래서 그 중 하나를 선택하고 버텨.

오류 3: 기능에 대한 액세스를 하나의 클래스에 통합


우리는 API 특성에 대한 액세스를 하나의 하이퍼클래스에 집중함으로써 고객의 생활을 더욱 수월하게 할 수 있다고 생각할 수 있습니다.우선, 이것은 좋은 생각인 것 같다. 왜냐하면 클라이언트가 하나의 특성에 접근하는 데 필요한 것은 하나의 계승 방법을 호출하는 것이다.
우리는 그것을 더욱 명확하게 이해하기 위해 예를 하나 봅시다.
public class GreatApi {

    public CoolFeature getCoolFeature() {
        return new CoolFeature();
    }

    public NiceFeature getNiceFeature() {
        return new NiceFeature();
    }

    public AwesomeFeature getAwesomeFeature() {
        return new AwesomeFeature();
    }

}
public abstract class GreatApiClient {

    private GreatApi greatApi;

    public GreatApi getGreatApi() {
        return this.greatApi;
    }

}
public class ClientClass extends GreatApiClient {

    public void doClientStuff() {
        getGreatApi().getAwesomeFeature().doAwesomeStuff();
    }

}
클라이언트가 직접 이 기능을 사용하는 것이 맞습니까?그러나 이런 방법은 미래에 우리에게 커다란 문제를 가져올 것이다.
문제는 API를 사용해야 하는 모든 클라이언트 클래스가 GreatApiClientGreatApi 클래스에 의존한다는 점입니다.우리는 이렇게 하기를 원하지 않는다. 왜냐하면 하나의 부품이 넓게 분포할수록 그것을 바꾸기 어렵다.
클라이언트가 최종적으로 많은 종류를 모의해야 하기 때문에 테스트도 어려워질 것이다.
또 다른 문제는 GreatApi 클래스가 커질 것이다. 왜냐하면 이 클래스를 통해 API의 모든 특성에 접근할 수 있기 때문이다.위반Single-responsibility principle 외에도 병발 문제가 발생할 수 있다.
하나의 좋은 대체 방법은 의존 주입을 사용하는 것이지, 사용 클래스GreatApiGreatApiClient를 사용하는 것이 아니다.이렇게 하면 클라이언트 클래스는 진정으로 필요한 클래스에만 의존할 것이다.
import javax.inject.Inject;

public class ClientClassUsingDependencyInjection {

    @Inject
    private AwesomeFeature awesomeFeature;

    public void doClientStuff() {
        this.awesomeFeature.doAwesomeStuff();
    }

}

오류 4: 불변 객체를 사용하지 마십시오.


불변류는 라인이 안전하다.그 자체가 변할 수 없는 것을 쓴 좋은 이유다.그러나 이런 종류를 사용하면 더 많은 장점이 있다.
요서아 브로흐는 그의 Effective Java책에서 다음과 같이 썼다.

An immutable class is simply a class whose instances cannot be modified. All of the information contained in each instance is fixed for the lifetime of the object, so no changes can ever be observed. The Java platform libraries contain many immutable classes, including String, the boxed primitive classes, and BigInteger and BigDecimal. There are many good reasons for this: Immutable classes are easier to design, implement, and use than mutable classes. They are less prone to error and are more secure.


불변 클래스를 만드는 방법은 Oracle’s Java Tutorial에서 찾을 수 있습니다.

고객이 API를 사용할 수 있도록 지원


좋은 성능과 버그가 없는 것은 우수한 API의 기초이다.Java API를 더 많이 사용하는 이유는 아닙니다.이것은 사람들이 기대하는 최저한도다.그뿐만이 아닙니다.API를 사용하여 고객 만족그들은 훌륭한 코드를 만들려고 하기 때문에 잘못된 방법을 강요하지 마라.반대로, 당신의 API를 사용하여 그들이 최상의 실천을 사용하도록 격려하고 격려하세요.
이것은 당신이 더 좋은 전문가가 되는 것을 도울 뿐만 아니라, 당신의 사업을 발전시킬 수 있는 능력을 제공할 것이다.
무엇이 더 많은 사람들이 자바 API를 사용하지 못하게 했습니까?여기에 메시지를 남기거나 my social media를 통해 저에게 메시지를 남겨주세요.이것은 당신이 더 많은 고객을 당신의 제품으로 끌어들이는 데 도움이 될 것이다.

좋은 웹페이지 즐겨찾기