Wpis z mikrobloga

@JacobTheLiar: interfejsy nie mają własnych pól, więc dostęp jest tylko przez właściwości, a z kolei te na interfejsie muszą mieć źródło i/lub cel, jakim mogą być tylko metody.
Jednym słowem: nie zrobisz.

PS. Strona mi się nie ładuje.
  • Odpowiedz
@Dzyszla: dzięki, już wiem, że nie zrobię. Masz może jakiś helper by pomógł mi zrobić klasę z interfejsem z geterami i seterami pól? Chyba, że jest jakiś magiczny skrót w środowisku o którym nie wiem.
  • Odpowiedz
@JacobTheLiar: jak zapiszesz property wraz z read i write to wystarczy ctrl+shift+c. jak masz już w interfejsie, to poprzez podpowiadani składni można dodawać też.

Tak generalnie, to interfejsy obecnie w Delphi sprawdzają się tylko w szczególnych przypadkach. Poza tym robią więcej bałaganu niż pożytku.
  • Odpowiedz
@JacobTheLiar: A jeszcze tak sobie sprawdziłem na spokojnie - Shift+Ctrl+C tylko w klasach działa - w interfejsie nie (chyba, że coś w nowszych się zmieniło) :/
a w klasie to piszesz sobie :
property x: Integer read GetX write SetX;
dajesz Ctrl+Shift+C i funkcje są utworzone.

PS. Teraz mi się załadowała strona. Jak już w interfesie są property, to klasa ich nie potrzebuje. Czyli tylko tak:

Iabc = interface
function _GetX:
  • Odpowiedz
@Dzyszla: napisałem sobie aplikacje co generuje mi cały unit z interfejsem i klasą w taki sposób jak ma wyglądać. nie uśmiecha mi się już pisać za typem read GetX write SetX by móc wygenerować getery i setery ze skrótu klawiszowego.

Zauważyłem, że mimo tego, że interfejs ma w sobie getery i setery do property to środowisko podpowiada tylko property z interfejsu. Więc może taki bałagan jednak troszkę mniejszy.

W interfejsach podoba
  • Odpowiedz
@JacobTheLiar: Czasem mechanizm zliczania odwołań (a więc coś w rodzaju GC) bywa wygodny, szczególnie, gdy trudno nam kontrolować przekazywanie obiektu. Ale trzeba też pamiętać, że ma to swoje obłożenie wydajności - np. tam, gdzie produkuje się i zwalnia setki tysięcy obiektów, opieranie się na interfejsie może być kulą u nogi.

Co do podpowiadania - nie wiem jak tam w najnowszych wersjach, ale jeszcze niedawno na bank edytor nie rozróżniał metody będącej
  • Odpowiedz
@Dzyszla: zgodzę się z Tobą w 100%, ale do każdego rozwiązania należy podejść w sumie indywidualnie.

Moje aplikacje to głównie są "cienkimi klientami" i służą w sumie poza kontrolą tego co wprowadza user tylko wymianą danych między klientem a serwerem. Serwer zajmuje się wszystkim co ma się zadziać z danymi. Wydajność gra tutaj dalsze role nawet na FireMonkey. A dzisiejszych czasach sprzęt mobilny jest wydajny i przy użyciu jak w moich
  • Odpowiedz
@JacobTheLiar: Ja bardzo często mam np klasy-listy, które agregują klasy-elementy, a te nieraz mają klasy zagnieżdżone jeszcze. Przy takim układzie podział na unity byłby mało czytelny właśnie. I często właśnie takie klasy-elementy mają sekcję tylko private tak, aby klasa-lista miała dostęp do elementów, do których nie ma dostęp użytkownik.

A potem cyk i unit ma po kilka tysięcy linii kodu :) 150 linii to nieraz sama definicja potrafi zająć, np. klasa
  • Odpowiedz