"특정 방법으로 사용해야합니다"클래스를 작성하고 있습니다 (모든 클래스는 반드시 ...).
예를 들어 fooManager
클래스를 만들려면을 호출 해야 합니다 Initialize(string,string)
. 그리고 예제를 조금 더 나아 가기 위해 클래스의 ThisHappened
행동을 듣지 않으면 클래스는 쓸모가 없습니다 .
내 요점은, 내가 쓰고있는 클래스에는 메소드 호출이 필요하다는 것입니다. 그러나 이러한 메소드를 호출하지 않으면 컴파일이 잘되고 빈 FooManager가 생깁니다. 어떤 시점에서는 클래스와 클래스에 따라 작동하지 않거나 충돌 할 수 있습니다. 내 클래스를 구현하는 프로그래머는 분명히 내부를 들여다보고 "아, 나는 Initialize를 호출하지 않았다!"
그러나 나는 그것을 좋아하지 않습니다. 내가 이상적으로 원하는 것은 메소드가 호출되지 않은 경우 컴파일하지 않는 코드입니다. 나는 그것이 불가능하다는 것을 추측하고 있습니다. 또는 즉시 눈에 띄고 명확한 것.
나는 내가 여기에 현재 접근 방식에 문제가 있습니다.
클래스에 개인 부울 값을 추가하고 클래스가 초기화되었는지 여부를 확인하십시오. 그렇지 않은 경우 "클래스가 초기화되지 않았습니다 .Initialize(string,string)
. 전화 하시겠습니까?" 라는 예외가 발생 합니다.
나는 그 접근법에 대해 괜찮지 만, 결국 최종 사용자에게 필요하지 않은 많은 코드를 컴파일합니다.
또한 Initiliaze
호출 하는 것보다 더 많은 메소드가있을 때 때로는 더 많은 코드 입니다. 수업을 너무 많은 공개 방법 / 행동으로 유지하려고 노력하지만 문제를 해결하지는 못하고 합리적으로 유지하십시오.
내가 찾고있는 것은 :
- 내 접근 방식이 맞습니까?
- 더 좋은 것이 있습니까?
- 너희들은 무엇을 / 조언합니까?
- 문제가 아닌 문제를 해결하려고합니까? 나는 동료들에게 수업을 사용하기 전에 수업을 확인해야한다고 들었습니다. 나는 정중하게 동의하지 않지만 그것은 내가 믿는 또 다른 문제입니다.
간단히 말해서, 나중에 클래스를 재사용 할 때 또는 다른 사람이 호출을 구현하는 것을 잊지 않는 방법을 찾으려고합니다.
설명 :
여기에 많은 질문을 명확히하기 위해 :
클래스의 초기화 부분에 대해서만 이야기 할뿐만 아니라 평생 동안입니다. 동료가 메소드를 두 번 호출하지 못하게하여 Y보다 X 앞에 X를 호출하도록하십시오. 필수적이고 문서화되었지만 결국 코드에서 가능한 한 간단하고 작은 것을 원합니다. Asserts의 아이디어가 정말 마음에 들었지만 Asserts가 항상 가능하지는 않기 때문에 다른 아이디어를 혼합해야한다고 확신합니다.
C # 언어를 사용하고 있습니다! 나는 그것을 어떻게 언급하지 않았습니까?! 저는 Xamarin 환경에 있으며 PCL, iOS, Android 및 Windows 프로젝트를 포함한 솔루션에서 일반적으로 약 6-9 개의 프로젝트를 사용하는 모바일 앱을 구축하고 있습니다. 나는 약 1 년 반 동안 (학교와 일을 결합한) 개발자 였으므로 때로는 어리석은 진술 / 질문이 있습니다. 아마도 여기에는 관련이 없지만 너무 많은 정보가 항상 나쁜 것은 아닙니다.
나는 플랫폼 제한과 의존성 주입의 사용으로 인해 생성자에 필수적인 모든 것을 항상 넣을 수는 없습니다. 인터페이스 이외의 매개 변수는 테이블에서 벗어납니다. 또는 내 지식이 충분하지 않아서 가능할 수도 있습니다. 대부분의 경우 초기화 문제는 아니지만 그 이상
그가 그 이벤트에 등록했는지 어떻게 확인할 수 있습니까?
그가 "어느 시점에서 프로세스를 중지"하는 것을 잊지 않도록 어떻게 할 수 있습니까?
여기에 Ad fetching 클래스가 있습니다. 광고가 표시되는보기가 표시되는 한 클래스는 1 분마다 새 광고를 가져옵니다. 해당 클래스는 광고를 표시 할 수있는 위치에 구성 할 때보기가 필요합니다. 그러나 일단 뷰가 사라지면 StopFetching ()을 호출해야합니다. 그렇지 않으면 클래스는 여전히 존재하지 않는보기에 대한 광고를 계속 가져 오며 이는 나쁘다.
또한 해당 클래스에는 "AdClicked"와 같이 들어야하는 이벤트가 있습니다. 듣지 않으면 모든 것이 잘 작동하지만 탭이 등록되지 않으면 분석 추적이 손실됩니다. 그래도 광고는 계속 작동하므로 사용자와 개발자에게는 차이가 없으며 분석 결과에 잘못된 데이터가 있습니다. 그것은 피해야하지만 개발자가 타오 이벤트에 등록해야한다는 것을 어떻게 알 수 있는지 잘 모르겠습니다. 그것은 간단한 예이지만, "그가 이용할 수있는 공개 행동을 사용하도록하십시오"는 물론 적절한시기에 아이디어가 있습니다!
initialize
객체 생성 후 늦게 호출해야 합니까? ctor가 예외를 던지고 창작 체인을 깨뜨릴 수 있다는 점에서 너무 "위험"합니까?
new
하십시오. 이렇게하면 오브젝트를 사용할 준비가되지 않은 경우 호출을 지나치지 않습니다. 초기화 방법에 의존하는 것은 당신을 괴롭히기 위해 돌아와야하며 절대적으로 필요한 경우가 아니면 피해야합니다. 적어도 그것은 내 경험입니다.