MQL5'te OOP hakkında sorular - sayfa 49

 

Bu vahşi akıl oyunlarının anlamı ne olacak? Desenin "amacı" (tırnak işaretleri içinde, çünkü... glayöl), "kapsüllemeyi ihlal etmeden , nesnenin iç durumunu yakalayın ve kaydedin " (tırnak içinde, çünkü alıntıdır). Ancak setState() yöntemi vazgeçilmezdir. Peki, kapsüllemenin korunması nerede? Her özel alan için iki yöntem daha yazın ... evet ... serin kapsülleme korunur.

Ve dürüst olun, bu yaklaşımı pratikte uygulayacak mısınız? Ben şüpheliyim. Pratikte, onu açık ve şeffaf hale getireceksiniz - örneğin, aynı alanlara sahip bir yapı ve kaydetme ve geri yükleme için birkaç yöntem. Ve sonra kapsülleme gerçekten korunacak, sadece iki yeni yöntem ortaya çıkacak: durumu kurtarmak ve geri yüklemek için.

 
Igor Makanu :

Tamam, kaydedeceğim, çalışma prensibini test etmek zorunda kaldım, belki de aradığım şey buydu - test cihazı ve çalışan EA için durumunu kurtarabilen bir kod, ancak test cihazında tam tersi , "ekstra hareketler" için kaynakları boşa harcamayın - böyle bir kalıbın parçası #ifdef -ami olabilir ;)

Kaleciyle olan bu saçmalığın anlamını anlamaya çalışıyorum ama pek faydasını görmüyorum. Aslında bu, yan etkiler yaratarak programlama için kötü bir uygulamadır. Bir nesneyi değiştirdiğinizde, diğerini değiştirirsiniz. Sonuç olarak, kod kafa karıştırıcı ve anlaşılması zor hale gelir. Kod saflığı için çabalamak daha iyidir, IMHO.

Bir nesneyi başka bir nesneye kopyalayıp sonra onu geri kopyalamanızı engelleyen nedir? Esasen aynı şey, sadece daha doğru ve anlaşılır.

Singleton'larda da durum aynı. Bu singleton'da aynı anda hem ayarlayıcılar hem de alıcılar varsa (yani, durumunu değiştirmenize ve okumanıza izin verir), bu, global değişkenlerle çalışmaya eşdeğerdir. Aynı zamanda, her programcı küresel durumu değiştirmenin kötü olduğunu bilir. Ama singleton nedense sayılmaz)

 
Alexey Navoykov :

Kaleciyle olan bu saçmalığın anlamını anlamaya çalışıyorum ama pek faydasını görmüyorum. Aslında bu, yan etkiler yaratarak programlama için kötü bir uygulamadır. Bir nesneyi değiştirdiğinizde, diğerini değiştirirsiniz. Sonuç olarak, kod kafa karıştırıcı ve anlaşılması zor hale gelir. Kod saflığı için çabalamak daha iyidir, IMHO.

her şey daha kolay, teknik olasılıkları inceliyorum

Pekala, ve muhtemelen düşünce tarzı iz bırakır, ben daha çok otomatik bir sistemin durumunu sonlu durumlu bir makine konumundan değerlendirmeye alışığım ve bu her zaman bende yedekte sistemin durumu)))

 
Igor Makanu :

Otomatik bir sistemin durumunu sonlu durumlu bir makine konumundan değerlendirmeye daha çok alışkınım ve bu her zaman sistemin durumunun bir "dökümünü" yedekte kaydetme isteği uyandırıyor)))

Evet amaç belli. Bence böyle bir uygulama gereksiz yere karmaşık ve kafa karıştırıcı.

 
Alexey Navoykov :

Evet amaç belli. Bence böyle bir uygulama gereksiz yere karmaşık ve kafa karıştırıcı.

ne yazık ki, insanlar böyle düzenlenir - ben kendim çubukları kırıp konileri toplayana kadar, gelmesi pek mümkün değil)))

 
Igor Makanu :

ne yazık ki, insanlar böyle düzenlenir - ben kendim çubukları kırıp konileri toplayana kadar, gelmesi pek mümkün değil)))

Birinin bu kalıpları incelemesinde yanlış bir şey yok, bu harika - beyin jimnastiği vb. vb. Ve sonunda, daha yakından incelendiğinde, bunun bir tür cehennem sahtekarlığı, enayileri gerçeklikten uzaklaştıran bir tür mem olduğu ortaya çıktı, tıpkı yazma konsol uygulamaları aracılığıyla görsel temelleri öğrenmek gibi.

Bu kalıpları, en azından birinin hamamböceklerini - doğada ne olduklarını - incelemek açısından incelemek ilginçtir.

Ve eğer bir nesnenin durumunu kurtarma görevine gerçekten yaklaşırsanız, o zaman burada yol, bir nesneyi diğerine, ne isterseniz, basitçe bir yöntemle veya aşırı yük yoluyla = kopyalama yeteneği sağlamaktan geçer. Ve ayrıca, bu olasılığı kapsülleme arzusu ortadan kalkabilir.

 
Dmitry Fedoseev :

Ve eğer bir nesnenin durumunu kurtarma görevine gerçekten yaklaşırsanız, o zaman burada yol, bir nesneyi diğerine, ne isterseniz, basit bir yöntemle veya aşırı yük yoluyla = kopyalama yeteneği sağlamaktan geçer. Ve sonra, bu olasılığı kapsülleme arzusu ortadan kalkabilir.

eğer gerçekse, herhangi bir teknik sistem 3 temel prensibe dayalı olarak tasarlanabilir:

- en son standarda uygundur

-dedelerimiz böyle yapmış, tekerleği yeniden icat etmeye gerek yok

- neden bir gomna ve sticks'ten hızlı bir tane yapmıyoruz, o zaman yeniden yaparız

)))


Şaka yapıyorum, kafamdaki seçenekleri okuyup bükecek zamanım var, bunu kullanıyorum ve forumdaki anlaşılmaz anlara hızlı bir şekilde açıklama alma fırsatı;)

 
Alexey Navoykov :

Kaleciyle olan bu saçmalığın anlamını anlamaya çalışıyorum ama pek faydasını görmüyorum. Aslında bu, yan etkiler yaratarak programlama için kötü bir uygulamadır. Bir nesneyi değiştirdiğinizde, diğerini değiştirirsiniz. Sonuç olarak, kod kafa karıştırıcı ve anlaşılması zor hale gelir. Kod saflığı için çabalamak daha iyidir, IMHO.

Bir nesneyi başka bir nesneye kopyalayıp sonra onu geri kopyalamanızı engelleyen nedir? Esasen aynı şey, sadece daha doğru ve anlaşılır.

Singleton'da da aynı. Bu singleton'da aynı anda hem ayarlayıcılar hem de alıcılar varsa (yani, durumunu değiştirmenize ve okumanıza izin verir), bu, global değişkenlerle çalışmaya eşdeğerdir. Aynı zamanda, her programcı küresel durumu değiştirmenin kötü olduğunu bilir. Ama singleton nedense sayılmaz)

Bunun ciddi, büyük ölçekli projelerle hiçbir ilgisi olmayan bir programcının tipik bir bakış açısı olduğunu varsayıyorum? doğrudan olduğum için üzgünüm, ancak temellerin temellerini kötü uygulama olarak adlandırmak için başka bir açıklama göremiyorum)

 
Dmitry Fedoseev :

Birinin bu kalıpları incelemesinde yanlış bir şey yok, bu harika - beyin jimnastiği vb. vb. Ve sonunda, daha yakından incelendiğinde, bunun bir tür cehennem sahtekarlığı, enayileri gerçeklikten uzaklaştıran bir tür mem olduğu ortaya çıktı, tıpkı yazma konsol uygulamaları aracılığıyla görsel temelleri öğrenmek gibi.

Bu kalıpları, en azından birinin hamamböceklerini - doğada ne olduklarını - incelemek açısından incelemek ilginçtir.

Ve eğer bir nesnenin durumunu kaydetme görevine gerçekten yaklaşırsanız, o zaman burada yol, bir nesneyi diğerine, ne isterseniz, ister basit bir yöntemle, ister aşırı yük ile ='i kopyalama yeteneği sağlamaktan geçer. Ve sonra, bu olasılığı kapsülleme arzusu ortadan kalkabilir.

Dmitry, muhtemelen bu durumda Koruyucu ve Prototip kalıplarının görevlerini ve bunların tüm olası kombinasyonlarını ve tezahürlerini biraz karıştırıyorsunuz. İlk olarak, bir Anlık Görüntü, bir Prototipten farklı olarak tüm nesneyi kopyalamak zorunda değildir.

Ve evet, kapsülleme ihtiyacı kendini esas olarak bir grup insanla büyük projelerde gösterir. Yerel problemlerin çoğu gibi bu tür oyuncaklar için elbette fazladan bir şey var)

 
Alexey Navoykov :

1) Kaleci ile bu saçmalığın anlamını anlamaya çalışıyorum ama pek faydasını göremiyorum.
2) Aslında bu, yan etkiler yaratarak kötü bir programlama uygulamasıdır.
3) Bir nesneyi değiştirirken diğerini değiştirirsiniz. Sonuç olarak, kod kafa karıştırıcı ve anlaşılması zor hale gelir. Kod saflığı için çabalamak daha iyidir, IMHO.
4) Bir nesneyi başka bir nesneye kopyalayıp sonra onu geri kopyalamanızı engelleyen nedir? Esasen aynı şey, sadece daha doğru ve anlaşılır.

Singleton'larda da durum aynı. Bu singleton'da aynı anda hem ayarlayıcılar hem de alıcılar varsa (yani, durumunu değiştirmenize ve okumanıza izin verir), bu, global değişkenlerle çalışmaya eşdeğerdir. Aynı zamanda, her programcı küresel durumu değiştirmenin kötü olduğunu bilir. Ama singleton nedense sayılmaz)

"Intyrnet koymuşlar, intyrnet, bizim buna ihtiyacımız yok, sizin internetiniz..." tarikatından olma ihtimaliniz var mı ???


1. Kaleci, bir değil, bu değişikliklerden birkaç yüz varken değişiklikleri geri almak için değiştirilebilir içerikle yazarken durumu saklamak için kullanılan desene benzer tasarım. Örneğin fotoğraf düzenleyici, metin düzenleyici...
Yazdıktan sonra bulundu - https://refactoring.guru/en/design-patterns/memento
2. Aslında orada bir şeyi eleştirmek konuyu bilmemek ve anlamamak kötü bir uygulamadır...
3. Sizin için zaten anlaşılmaz olan bir şey nasıl daha kafa karıştırıcı ve anlaşılması zor hale gelebilir?
4. Kendiniz...