2013-10-13 4 views
1

나는 HTML을 파싱하고 RDF를 생성하기 위해 자바 클래스를 만들고있다. (나는 결국 두 개의 클래스로 분리 될 것이다. 하나는 파싱을위한 것이고 하나는 RDF를 생성하는 것이다.)적절한 방법을 util 클래스에 넣으려면?

지금은 HTML 데이터를 확인하고 더 균일 한 표현으로 변환하는 많은 방법을 만들고 있습니다. 지금까지 작성한 메소드 중 일부는 다음과 같습니다.

public boolean isInteger(String str) { } 
public boolean isTime(String str) { } 
public boolean isDate(String str) { } 
public String dateConverter(String[] date) { } //Converts a Norwegian date into mmddYYYY 

이러한 메소드를 util 클래스에 넣어야합니까? 현재이 특수 클래스에서만 사용하고 있지만 나중에는이 클래스보다 더 많이 사용해야 할 수도 있습니다.

+0

왜 .. 좀 더 구체적인 질문이 있으십니까? –

+0

아니, 정말로 나는이 방법들을 utils 클래스에 넣는 것에 대한 제 생각이 맞는지 알고 싶었습니다. 내 OOP 기술을 향상시키고 싶다! – Jea

답변

3

나열된 방법이 util 클래스의 public static 메소드에 대한 좋은 후보로 보입니다. (예를 들어, 마지막 2 또는 3은 "DateUtils"라는 클래스에 잘 맞을 것입니다.)

물론 한 곳에서만 사용하면 '비공개 도우미'가 될 수 있지만 당신이 그들을 사용하는 여러 장소를 가지 자마자, util 클래스가 합리적입니다.

(편집 : 정적 메소드의 남용은 문제가 될 수 있지만, 나는이 방법이 잘 그들이 pure functions 때문에 정적 유틸 될 수있다 생각합니다.)

+0

+1 순수 함수에 대한 설명 – Jea

+0

개인 도우미에 관한 질문이 아니라 테스트 가능성에 대한 질문입니다. – Rich

1

그들은 util 클래스에 넣기에 충분할 정도로 일반적으로 보입니다. 나는 최소한. 기본적으로 코드에서 String을 파싱하는 모든 클래스는 이러한 메서드를 사용해야합니다. 불필요한 구조를 피하기 위해 클래스에 추가하기 전에 정적으로 만들 것입니다.

분해가 좋은 습관입니다. 당신이 그 (것)들을 사용할 필요가 있는지 당신이 확실하지 않은 경우에, 그 후에 계속하고 이렇게하십시오. 유틸리티 클래스를 사용하여 연습 할 수 있습니다.

0

두 클래스로 나누고 싶다면 기본 클래스를 인터페이스 또는 추상 클래스로 정의 할 수 있습니다.

귀하의 요구 사항을 기반으로 추상 클래스가 올바른 선택이어야합니다. 하위 클래스에서 추상 클래스로 공통된 사항을 입력하십시오 (추상 클래스에서 메소드를 구현할 수 있음)

다른 대답은 무엇입니까? 대답은 불필요한 구조를 피하기 위해 메서드 앞에 정적을 두는 것이 좋습니다.

추상 클래스는 해당 메서드를 호출하기 위해 인스턴스화 할 필요가 없다는 것을 알고 있습니다. 또한 건설을 피할 수 있습니다.

질문이 있습니까? 어느 쪽이 더 합법입니까? 또는 더 나은? 또는 동일합니다.

1

는 이러한 방법을 수집하는 것이 좋습니다 유틸리티 클래스. 현재이 클래스가 단일 클래스에서 호출 되더라도 이러한 유형의 메소드는 가까운 기능의 다른 클라이언트가 잠재적으로 재사용 할 수 있습니다.

그러나이 유틸리티 클래스를 재사용하기 쉽도록주의해야합니다. 이렇게하려면 메서드 시그니처 (실제로는 해당 인수)가 가능한 한 포괄적이어야합니다. 학생들은 수업과 관련된 입력을 받아서는 안됩니다.

또 다른 충고는 많은 비 일관적인 방법을 포함하기 시작하면이 유틸리티 클래스를 둘 이상의 클래스로 나눕니다. 관련 메서드를 별도의 클래스로 그룹화하여이 작업을 수행 할 수 있습니다. 예를 들어, 작성한 메소드는 TypeUtils 클래스로 이동할 수 있으며 예를 들어 Html2RdfUtils 클래스의 변환 관련 메소드를 수집 할 수 있습니다.

마지막으로 이러한 유틸리티 클래스가 다른 프로젝트에 유용 할 수 있다고 생각되면 고유 한 라이브러리에서 유틸리티 클래스를 수집 할 수 있습니다.

관련 문제