Wpis z mikrobloga

Hej,

Niby proste pytanie ale spędza mi sen z powiek, bo mimo, że przeczytałem już z 300 stron książki o Rust, to ciągle nie mam odpowiedzi na to pytanie.

A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach?
W C++ po prostu utworzyłbym klasę bazową i odziedziczyłbym zmienne oraz funkcje z niej korzystające.

Z tego co wiem to chyba takie podejście jest niemożliwe w Rust.
Traits z tego co kojarzę, może jedynie wymuszać implementację funkcji, które nie korzystają z elementów danej klasy.

Oto przykład z duplikacją kodu z którym mam problem(pole messages i funkcja print_message się duplikują):
Niby mogę to wlepić do innej klasy i ją wrzucić jako obiekt do bazowej struktury, ale wolałbym coś w stylu dziedziczenia C++

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=69bd793030c5de970f5ecc98755cbca4

#rustlang #programowanie
  • 6
A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach?


@qarmin: wyekstrahowanie do osobnej struktury? Ten problem wymaga zmiany myślenia, można spokojnie pisać kod bez dziedziczenia (poza oczywiście interfejsami) zarówno w C++ jak i w Ruscie. Dziedziczenie zmiennych to największa zbrodnia popełniona w programowaniu i bardzo dobrze, że tego nie ma w Ruscie
@JakTamCoTam: bo samo dziedziczenie często jest źle używane, a parę lat temu istniała moda na wrzucanie dziedziczenia gdzie popadnie (co zresztą było uczone na studiach), przez to jak przyjdzie ci wejść w stary kod napisany w stylu OOP to tylko płakać. Z polami jest taki problem, że zazwyczaj nie idzie za tym żadna logika i pomysł na modularyzację kodu tylko lenistwo wynikające z braku pomysłu na podzieleniu klasy na mniejsze komponenty.
via Wykop Mobilny (Android)
  • 0
@Saly: to dobrze wiedzieć bo teraz siedzę w jednym projekcie gdzie jest mnóstwo dziedziczenia oraz wielodziedziczenia a to moja pierwsza praca i myślałem że po prostu tak wyglądają ogromne systemy xd.
A polecilbys jakąś książkę albo kurs w którym można się poduczyć poprawnego projektowania w stylu OOP?