Używam Delphi już od jakiegoś czasu, ale zamiast pochodzić z tła CS, nauczyłem się "w pracy" - głównie od mojego szefa, a wzbogacony o fragmenty zebrane z internetu, przewodniki dla użytkowników , przykłady itp.Dlaczego powinniśmy używać klas, a nie rekordów lub odwrotnie?
Teraz mój szef jest stary, zaczął programować za pomocą Pascala i niekoniecznie był na bieżąco z najnowszymi zmianami w Delphi.
Niedawno zastanawiałem się, czy jedna z naszych podstawowych technik jest "zła".
Większość naszych aplikacji współpracuje z MySQL. Ogólnie będziemy tworzyć record
ze strukturą do przechowywania danych odczytanych z DB, a te zapisy będą przechowywane w TList
. Ogólnie będziemy mieli jednostkę, która definiuje różne zapisy, które mamy w aplikacji, oraz funkcje i procedury, które rozpoczynają i odczytują rekordy. Nie używamy procedur rekordowe takie jak opisane here
Po zapoznaniu się kilka przykładów zacząłem się zastanawiać, czy bylibyśmy lepiej wyłączyć za pomocą classes
zamiast rekordów, ale mam trudności ze znalezieniem silne wytyczne w obu kierunkach .
Rzeczą, z którą mamy do czynienia, są informacje o użytkowniku: nazwy, DOB, zdarzenia, typy zdarzeń. Lub informacje grafiku: Godziny, Praca, etc ...
+1 Całkowicie przeciwny od mojego pierwszego instynktu, ale bardzo pragmatyczny, więc w końcu muszę się zgodzić. PO powinien być jednak świadomy ewentualnego trafienia w wyniku zleceń. Na przykład: przekazanie parametrów rekordu jako "const" powinno być domyślne, ale potem znowu, może to przerwać aplikację i wracamy do próbowania bycia pragmatycznym. –
@LievenKeersmaekers Tak, myślałem o dyskusji nad przekazywaniem parametrów, ale zdecydowałem się nie na prostotę. Można pomyśleć, że przekazywanie parametru według wartości jest równoznaczne z przypisaniem. Parametry są zmiennymi lokalnymi. Przekazywanie według wartości powoduje skopiowanie wartości lub odniesienia w zależności od typu parametru. Więc to, co wiesz o przypisaniach, odnosi się zarówno do przekazywania wartości parametrów. –
Generalnie używamy rekordów tylko podczas przesyłu danych strukturalnych (np. TCP, serial lub dysk), w którym to przypadku używamy zapakowanych rekordów, aby zapewnić, że rozmiar pozostaje skończony. Użyjemy klas/obiektów dla wszystkiego innego. –