Size: a a a

2016 April 09

DB

Dmitry Bubnenkov in dlang.ru
спасибо)
источник

DB

Dmitry Bubnenkov in dlang.ru
@chebotarevp а можно как-то сделать так, чтобы экземпляр класса не надо было в конструктор передавать, а он был всегда доступен?
источник

DB

Dmitry Bubnenkov in dlang.ru
Ну вот как я до main его объявил
источник

DB

Dmitry Bubnenkov in dlang.ru
MyClass mc;

void main()
{
 mc = new MyClass();
источник

DB

Dmitry Bubnenkov in dlang.ru
B дальше чтобы я мог сделать:

class testClass
{
 void foo ()
 {
   mc.say();


не передавая все это в конструктор класса
источник

PC

Pavel Chebotarev in dlang.ru
Передавать объекты в другие объекты - это хорошая практика, называется dependency inversion
источник

PC

Pavel Chebotarev in dlang.ru
Но если хочешь можешь закостылить, например сделать класс со статическими свойствами, и туда в эти свойства все сохранять, а потом из любого места программы обращаться к этим свойствам
источник

DB

Dmitry Bubnenkov in dlang.ru
а как это сделать не мог бы показать?
источник

DB

Dmitry Bubnenkov in dlang.ru
или там просто ключевое слово static нужно?
источник

DB

Dmitry Bubnenkov in dlang.ru
Тут по инверсии зависимостей только тонко намекающие демотиваторы возникают...

http://lh3.ggpht.com/-0j4EeQ7SvCU/VCOszb8-0VI/AAAAAAAAMKo/NpTyokx2SDg/clip_image001_thumb%25255B1%25255D.jpg?imgmax=800
источник

PC

Pavel Chebotarev in dlang.ru
Да это все херня )
источник

PC

Pavel Chebotarev in dlang.ru
Ты сам только что изобрел принцип инверсии зависимости и успешно используешь его. Но почему то хочешь от него уйти.
источник

PC

Pavel Chebotarev in dlang.ru
Да, когда больше надо чуть писать, но зато такой класс и тестировать удобнее и вообще он гибче.
источник

PC

Pavel Chebotarev in dlang.ru
https://dlang.org/spec/attribute.html#static вот статические свойства думаю создаются так же как и методы
источник

DB

Dmitry Bubnenkov in dlang.ru
Так, тоесть до main объявить класс. Потом создать класс и в нем все методы как static пометить?
источник

DB

Dmitry Bubnenkov in dlang.ru
афигеть заработало!
источник

DB

Dmitry Bubnenkov in dlang.ru
минусы какие у такого подхода?
источник

DB

Dmitry Bubnenkov in dlang.ru
А могу я вот так сделать?

class DBConnect
{
 Statement stmt;
 Config config;


 static this(Config config)
{
// тут код инициализации
}


нужно ли мне Statement stmt; как то помечать, что они статические тоже?
источник

PC

Pavel Chebotarev in dlang.ru
Dmitry Bubnenkov
минусы какие у такого подхода?
Ты везде будешь использовать этот класс, и когда твой код разрастется, рефакторинг окажется адом. Все будет зависеть от твоего глобального класса.
источник

PC

Pavel Chebotarev in dlang.ru
Со временем он превратится в помойку в которой будут лежать десятки или даже сотни статических методов и свойств.
источник