aşağıdaki yöntem ettik: girişimi ( polimorfik döndürme türü
attemptToGetToken(TokenRequestAttempt attempt);
Ben jetonu almak için üçüncü taraf bileşeni kullanmak ancak bazı durumlarda başarısız olabilir değil geçerli veya eksik parametreler).
aslında başarısız bekleniyor çünkü bu durum için bir özel durum atmak için hiçbir sebep yoktur.
Ancak, sonuca bağlı olarak, son kullanıcı, hareket etmektedir.
Ben kullanıcı bu/yapmaları gerekenler karar veren bir nesne dönmek gerektiği anlamına gelir.
muhtemelen en açık cevap basitçe böyle sınıf var olacaktır:
class AttemptResult {
constructor(status, token, errorMessage);
getStatus();
getToken();
getErrorMessage();
isSuccessful();
}
Ve basitçe düzgün nüfuslu bu nesneyi döndürmek (G/başarı için spesifik fabrika yöntemi eklemek devlet başarısız, ama olurdu olabilir sadece araç).
Bu yaklaşım ile sorunumuz sözleşme net olmadığıdır. başarısızlık durumunda
,token
null
olurdu ama developper sonra deneme başarısız Hava olmadığını kontrol etmek için
isSuccessful()
yöntemi kullanmak gerekir. Ancak hiçbir şey,
getToken()
numaralı telefonu aramasını ve
null
sonucunu almasını engelleyecektir.
İki tür nesneyi gerçekten döndürmenin daha iyi olmayacağını merak ediyorum.
interface TokenAttemptResult {}
class FailedTokenAttempt implements TokenAttemptResult {
getError();
}
class SuccessfulTokenAttempt implements TokenAttemptResult {
getToken();
}
ben hem sonucu arasında bir ilişki tanımlamak için boş arabirimini uygulamak için, şimdi benim hizmetindeki bir dönüş türü olarak bu arayüzü kullanabilirsiniz:
TokenAttemptResult attemptToGetToken(TokenRequestAttempt attempt);
bir kullanıcı yukarıdaki yöntem çağrıları O, geri dönüş türünü kontrol etmek ve buna göre hareket etmekle sorumludur, çağrılmaması gereken ve yan etkiler yaratabilecek olan yöntemi çağırmasını engeller.
Eğer bu tür bir tasarım hakkında ne düşünüyorsunuz? Herhangi biriniz bunu denediniz ve herhangi bir geri bildiriminiz var mı?
Lütfen gerçek argümanlar olmadan kişisel tercihleri içeren yapıcı olmayan cevaplardan kaçının, gerçekten ciddi tasarım teorilerini arıyorum.
Teşekkürler!
Olası uygulama hakkında iyi nokta! Ancak, bu durumda Kabul Edilebilirliğin sadece bir Hata veya Başarı olabileceğini (kendi başına konuştuğunu) kabul etmenin kabul edilebilir olup olmadığını merak ediyorum. Bu yaklaşımın arkasındaki temel amaç, mümkün olan iki tür sonucu doğru bir şekilde modellemek ve boş bir jetona ya da hayalet bir hataya erişmesi nedeniyle çalışma zamanı hatasını önlemekti. – Trent