C# Veriler bulunan bir sınıfa metot yazılır mı?

Katılım
11 Eylül 2020
Mesajlar
1.857
Çözümler
6
Yer
Almanya
Daha fazla  
Cinsiyet
Erkek
Meslek
König
Merhaba. Örnek olarak bir mesaj sınıfımız var. Bu sınıfta mesajı kimin gönderdiği, ne zaman gönderildiği, kime gönderildiği gibi veriler yer alıyor. Ben MesajGönder gibi bir metodu mesaj sınıfına mı yazmalıyım? Ya da ayrı bir sınıfa yazıp parametre ile bir mesaj örneği alıp oradan mı göndermeliyim? Hangisi temiz kod anlayışına daha uygundur?
 
Son düzenleyen: Moderatör:
Ben olsam "mesaj" sınıfına yazardım sanırım, ayrıca temiz kod anlayışı önemli olsa da asıl önemli olan kendinizce daha anlaşılabilir bir kod yazmak olmalı.
 
Ayri bir class'ta yazman daha dogru.

Mesaji data tasiyan bir class olarak tasarlarsin, mesaj gonderme bir interface, mesajin gonderilmesinin implementasyonlari da ayri ayri class'lar olur.

Message -> data object
MesagePublisher -> interface
DiscordMessagePublisher, WhatsappMessagePublisher vs bunlar MessagePublisher implementasyonlari.

Eger tutup da "Message" class'ina yazarsan her farkli mesaj gonderim bicimi icin ayni class'i degistireceksin. Yeni bir attribute eklemek istediginde yine ayni class'i degistireceksin. Bu da tonla dependency yaratacak, god object olusacak.

Aslinda dogrusu Message'in kendisinin bile interface olmasi.
 
Ayri bir class'ta yazman daha dogru.

Mesaji data tasiyan bir class olarak tasarlarsin, mesaj gonderme bir interface, mesajin gonderilmesinin implementasyonlari da ayri ayri class'lar olur.

Message -> data object
MesagePublisher -> interface
DiscordMessagePublisher, WhatsappMessagePublisher vs bunlar MessagePublisher implementasyonlari.

Eger tutup da "Message" class'ina yazarsan her farkli mesaj gonderim bicimi icin ayni class'i degistireceksin. Yeni bir attribute eklemek istediginde yine ayni class'i degistireceksin. Bu da tonla dependency yaratacak, god object olusacak.

Aslinda dogrusu Message'in kendisinin bile interface olmasi.
Message entitynin kendisi değil mi? Entity neden interface olsun ki?
 
Accounts
MessageDB - (Message)
Message - (receiver_id, sender_id, time_stamp, contents, status vs.)
Connections - (MessageDB, Accounts)
Message < TextMessage < FileMessage < vs. türetilmiş

Connections.sendMessage(TextMessage)
Connections.sendMessage(FileMessage)


Böyle bir şey kurgulayabilirsin, sınıfları amaca yönelik genel olarak tasarlarsın alt süreçlerde de türetip gerekli override işlemlerini yaparsın. Daha esnek ve bakım/onarımı daha kolay olur.
 

Technopat Haberler

Geri
Yukarı