Giriş
Nesneye yönelik tasarımdaki en önemli eksiklerden birisi değerler için sınırların belirlenememesi.
Örnek
Elimizde şöyle bir kod olsun.
Bir çözüm olarak şöyle yapabiliriz. Burada Type System ile değişiklik yapılıyor. Ayrıca Runtime assertion ve Documentation'da kullanılıyor.
Nesneye yönelik tasarımdaki en önemli eksiklerden birisi değerler için sınırların belirlenememesi.
Örnek
Elimizde şöyle bir kod olsun.
public interface ISomeInterface
{
int SomeMethod(string a);
}
Bu kod için şöyle bir kısıtlama koymak isteyelim.1) For every object that consumes ISomeInterface, they assert that the returned int > 5.Bunu kolayca çözmenin yolu yok. Çözüm önerileri şöyle
2) For every object that implements ISomeInterface, they assert that the int they're about to return is > 5.
1. Type System of the LanguageÇözüm 1
2. Meta Annotations internal/external to the Language
3. Runtime Assertions
4. Documentation Targetted At Humans
Bir çözüm olarak şöyle yapabiliriz. Burada Type System ile değişiklik yapılıyor. Ayrıca Runtime assertion ve Documentation'da kullanılıyor.
// should be class, not struct as struct can be created without calling a constructor
public class ValidNumber
{
public int Number { get; }
public ValidNumber(int number)
{
if (number <= 5)
throw new ArgumentOutOfRangeException("Number must be greater than 5.")
Number = number;
}
}
public class Implementation : ISomeInterface
{
public ValidNumber SomeMethod(string a)
{
return new ValidNumber(int.Parse(a));
}
}
Hiç yorum yok:
Yorum Gönder