русский
Germany.ruForen → Архив Досок→ Programmierung

Вопрос Программисту - как заменить этот синглтон на его мок?

09.11.18 21:16
Re: Вопрос Программисту - как заменить этот синглтон на его мок?
 
dymanoid знакомое лицо
dymanoid

Твой код синглтона - говно, потому что он не потокобезопасный. Именно вот на эту говённую конструкцию Джон Скит дал свою рецензию:

Bad code! Do not use!

Если ты не знаешь, кто такой Джон Скит, не читал его "C# in depth" или скажешь, что он неправ или тебе плевать на его мнение, то я тебя поставлю в игнор и нам не о чем больше говорить.


Код из моего примера - максимально нетестируемый, это верно. Но не потому что я пишу такой код. Это потому что я показываю, каким говённым может быть древний лигаси-код из огромного продукта, где боятся лишний байт подвинуть.


Ты присобачил к синглтону интерфейс и открыл сеттер. Это не решение.

Объясняю.

Во-первых, это нарушение паттерна. Теперь любой джуниор может заменить в коде объект на что угодно. Что там в определении синглтона написано?

Синглтон - порождающий шаблон проектирования, гарантирующий, что в однопроцессном приложении будет единственный экземпляр некоторого класса

Ты нарушаешь контракт, данный всем клиентам, ради очень сомнительной цели "протестить чего-то там, что юзает этот синглтон".


Во-вторых, ты просто не решил поставленную задачу. Из моего примера видно, что я хочу протестить метод синглтона, а ты мне предлагаешь этот метод заменить на заглушку.


Я воздержусь от оценок твоих навыков и умений ("в отличие от тебя"). Код твоего синглтона и правда говно, но это объективно. Но я всем сердцем надеюсь, что в моей команде не будет таких "программистов", как ты.

 

Sprung zu