как минимизировать if(a!=null) a.some();
От: winston Россия  
Дата: 15.11.10 10:25
Оценка:
В некотором классе интенсивно используется объект а, теперь появилась вероятность того, что этот объект может быть null. Можно ли как-то красиво решить эту задачу не вставляя перед каждым обращением к объекту if(a!=null).
Re: как минимизировать if(a!=null) a.some();
От: Aen Sidhe Россия Просто блог
Дата: 15.11.10 10:28
Оценка:
Здравствуйте, winston, Вы писали:

W>В некотором классе интенсивно используется объект а, теперь появилась вероятность того, что этот объект может быть null. Можно ли как-то красиво решить эту задачу не вставляя перед каждым обращением к объекту if(a!=null).


public static class Extensions
{
  public static void SafeSome(this A obj)
  {
    if (obj != null)
      obj.Some();
  }
}

....
obj.SafeSome();


При желании можно написать генерик-версию типа SafeFunc()
С уважением, Анатолий Попов.
ICQ: 995-908
Re: как минимизировать if(a!=null) a.some();
От: irbis3003  
Дата: 15.11.10 10:32
Оценка: :)
Здравствуйте, winston, Вы писали:

W>В некотором классе интенсивно используется объект а, теперь появилась вероятность того, что этот объект может быть null. Можно ли как-то красиво решить эту задачу не вставляя перед каждым обращением к объекту if(a!=null).


Паттерн есть для этого. Правда название не помню, а гуглить лень.
Re[2]: как минимизировать if(a!=null) a.some();
От: winston Россия  
Дата: 15.11.10 10:39
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>
AS>public static class Extensions
AS>{
AS>  public static void SafeSome(this A obj)
AS>  {
AS>    if (obj != null)
AS>      obj.Some();
AS>  }
AS>}

AS>....
AS>obj.SafeSome();
AS>


AS>При желании можно написать генерик-версию типа SafeFunc()


Функция не обязательно some(), вызываются разные методы этого объекта.
Re[3]: как минимизировать if(a!=null) a.some();
От: Aen Sidhe Россия Просто блог
Дата: 15.11.10 10:44
Оценка:
Здравствуйте, winston, Вы писали:

W>Функция не обязательно some(), вызываются разные методы этого объекта.


1. Читаем про аспекты, ищем/пишем аспект NotNull.
2. Если количество методов невелико, пишем достаточное кол-во заглушек.
3. Generic variant:

public static class Extensions
{
  public static void SafeAction<T>(T obj, Action<T> action) where T: class
  {
    if (obj != null)
      action(T);
  }
}

....
obj.SafeAction(x => x.some());
....
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: как минимизировать if(a!=null) a.some();
От: winston Россия  
Дата: 15.11.10 10:45
Оценка: +1
Здравствуйте, irbis3003, Вы писали:

I>Паттерн есть для этого. Правда название не помню, а гуглить лень.


Никогда не понимал цель таких ответов. То ли вы хотите чтоб я порылся во всех паттернах, то ли чтобы я поуговаривал вас поискать. Ибо информационная ценность этого ответа стремится к нулю.
Re: как минимизировать if(a!=null) a.some();
От: Muxa  
Дата: 15.11.10 10:46
Оценка: 2 (1)
W>В некотором классе интенсивно используется объект а, теперь появилась вероятность того, что этот объект может быть null. Можно ли как-то красиво решить эту задачу не вставляя перед каждым обращением к объекту if(a!=null).
А объект а это поле класса?
если да — сделай свойство:
private A A {
  get { return _a ?? _a = new DummyA(); }
}
// ...
  A.Some();
Re[3]: как минимизировать if(a!=null) a.some();
От: QrystaL Украина  
Дата: 15.11.10 10:48
Оценка: 8 (3) +1
W>Функция не обязательно some(), вызываются разные методы этого объекта.

Maybe monad.
Re[3]: как минимизировать if(a!=null) a.some();
От: irbis3003  
Дата: 15.11.10 10:49
Оценка:
Здравствуйте, winston, Вы писали:

W>Никогда не понимал цель таких ответов. То ли вы хотите чтоб я порылся во всех паттернах, то ли чтобы я поуговаривал вас поискать. Ибо информационная ценность этого ответа стремится к нулю.


NullObject паттерн. Набрал-таки в поисковике ("паттерн проверки нулевого объекта") и нашел. Думаю гугл у меня работает так же, как и у Вас, было бы желание.
Re[4]: как минимизировать if(a!=null) a.some();
От: Aen Sidhe Россия Просто блог
Дата: 15.11.10 10:50
Оценка: -2
Здравствуйте, irbis3003, Вы писали:

I>Здравствуйте, winston, Вы писали:


W>>Никогда не понимал цель таких ответов. То ли вы хотите чтоб я порылся во всех паттернах, то ли чтобы я поуговаривал вас поискать. Ибо информационная ценность этого ответа стремится к нулю.


I>NullObject паттерн. Набрал-таки в поисковике ("паттерн проверки нулевого объекта") и нашел. Думаю гугл у меня работает так же, как и у Вас, было бы желание.


Кого волнует название паттерна, без ссылки на пример или на поисковый запрос в гугле?
С уважением, Анатолий Попов.
ICQ: 995-908
Re[5]: как минимизировать if(a!=null) a.some();
От: irbis3003  
Дата: 15.11.10 10:53
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Кого волнует название паттерна, без ссылки на пример или на поисковый запрос в гугле?


Давайте исходник, я еще и реализацию воткну. Раз названия мало, а самому найти пример в нэте Вам карма не позваляет.
Re[6]: оффтоп
От: Aen Sidhe Россия Просто блог
Дата: 15.11.10 10:56
Оценка: +1
Здравствуйте, irbis3003, Вы писали:

I>Здравствуйте, Aen Sidhe, Вы писали:


AS>>Кого волнует название паттерна, без ссылки на пример или на поисковый запрос в гугле?


I>Давайте исходник, я еще и реализацию воткну. Раз названия мало, а самому найти пример в нэте Вам карма не позваляет.


Выше я дал два примера, которые подойдут к любому исходнику, а товарищ Qrystal дал ссылку на описание вашего "паттерна" с реализацией.

Я же, когда мне лениво писать, даю ссылку на поисковый запрос, если ответ там в первой ссылке. Что гораздо полезнее ваших разглагольствований, поскольку:
1. Показывает человеку, что проблема проста и решается гуглом.
2. Даёт человеку ссылку на ответ.

Ваши же посты решают только проблему номер 1.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: как минимизировать if(a!=null) a.some();
От: winston Россия  
Дата: 15.11.10 11:00
Оценка:
Здравствуйте, QrystaL, Вы писали:

W>>Функция не обязательно some(), вызываются разные методы этого объекта.


QL>Maybe monad.


спасибо, вроде то что надо
Re[7]: оффтоп
От: irbis3003  
Дата: 15.11.10 11:03
Оценка: :)
Здравствуйте, Aen Sidhe, Вы писали:

AS>Ваши же посты решают только проблему номер 1.


угу. пойду повешусь.
Re[5]: как минимизировать if(a!=null) a.some();
От: winston Россия  
Дата: 15.11.10 11:04
Оценка: +1
Здравствуйте, Aen Sidhe, Вы писали:

AS>Кого волнует название паттерна, без ссылки на пример или на поисковый запрос в гугле?


Дак даже название паттерна не было озвучено, просто, мол, где-то там был паттерн. Было бы название — уже бы решило проблему
Re[4]: как минимизировать if(a!=null) a.some();
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.11.10 12:35
Оценка: +1
Здравствуйте, QrystaL, Вы писали:

W>>Функция не обязательно some(), вызываются разные методы этого объекта.


QL>Maybe monad.


Досадно что нельзя value типы использовать, ну и код громоздкий получается — не хватает сахара.
Re[5]: как минимизировать if(a!=null) a.some();
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.11.10 18:07
Оценка:
Здравствуйте, achmed, Вы писали:

A>Досадно что нельзя value типы использовать,


Имеешь в виду nullable типы?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[6]: как минимизировать if(a!=null) a.some();
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 16.11.10 06:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, achmed, Вы писали:


A>>Досадно что нельзя value типы использовать,


AVK>Имеешь в виду nullable типы?


Угу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.