Przemyślenia powstałe podczas tworzenia programów w Clarionie.

piątek, 5 grudnia 2008

Standardy programowania - Struktury danych

Klucze mają przedrostek Key. (np KeyNazwaKontrahenta). Klucze unikalne mają przedrostek nie Key, ale UKey, np. UkeyPesel
Spójność

Wszystkie pliki powinny mieć nastepujace pola:
ID. DataModyfikacji, CzasModyfikacji, IDOperatora_fk
Normalizacja danych

Kazdy plik powinien miec nastepujace indeksy:
- KeyIDKey który ma ustawione opcje: Auto Incrementing, Unique, Primary Key. W kluczu tym umieszczamy pole ID
- KeyModified, bez żadnych. W kluczu tym umieszczamy pola: IDOperatora_fk, DateModified, TimeModified.
Normalizacja danych

Pliki będące w relacji powinny być powiązane za pomoca pól ID . Pola te powinny byc zadeklarowane w obu plikach, w pliku z kluczem obcym z końcówką ‘_fk’. Relacja powinna miec ustawiona kontrole integralności na cascade lub restrict.Pola ID nie mogą być modyfikowane przez uzytkownika. Klucze obce w nazwie mają końcówkę "_fk".
Integralność

Przy definiowaniu słowników należy zwrócić szczególną± uwagę na wykorzystanie przy definiowaniu pól opcji:
Derived From służącej do dziedziczenia definicji pola
Do Not Auto-Populate This Field dla pól (np. typu ID), które nie powinny się z automatu pojawiać na ekranach i raportach - musi to być świadoma decyzja.
Jednocześnie zwracam uwagę, aby nie odpuszczać sobie wypełniania pozycji Description, Prompt Text, Column Heading, Message
Przy korzystaniu z opcji Derived From należy zwrócić uwagę na to, by
dziedziczenie odnosiło się we wszystkich przypadkach w ramach jednego słownika do jednego macierzystego pola, ponieważ w przypadku zastosowania łańcucha dziedziczeń opcja Refresh Dictionary obsługuje tylko jeden poziom zagłębienia. W przypadku łańcucha należałoby j± uruchomić tyle razy ile ogniw liczy łańcuch.


We właściwościach bazy należy obowiązkowo wybrać opcję OEM oraz zalecane jest stosowanie opcji Open in Current Thread, która to opcja powoduje zarezerwowanie w każdym wątku bufora dla bazy czyli faktycznie umożliwia pracę wielowątkową na tej samej bazie.


Przy definiowaniu zmiennych i pól należy zwrócić uwagę na następujące atrybuty:
i. Initial value - można tu nawet wpisywać funkcje i dzięki właściwej definicji oszczędzić sobie pracy z inicjowaniem danych poprzez wstawki w kodzie źródłowym
ii. Values - można dzięki właściwej definicji oszczędzić sobie pracy przy późniejszej obróbce jako, że wartości są całkowicie niezależne od zawartości pola Choices


Typy danych
Typ Danych SQL Topspeed Driver
ID LONG. ULONG,
Czas
Przechowywane jako cstring(8). Maska @t3.
Przechowywany jako Long. Maska @t3 lub @t6 gdy należy pokazywać sekundy.
Daty
Przechowywany jako cstring(11)
Przechowywany jako Date. Maska d17.
Strings
Zawsze jako cstring.
Zawsze jako cstring.
Memo
Duże pole cstring
Duże pole cstring
Groups
Nie uzywane w plikach
Nie używane w plikach

Kwoty
Decimal, n@16_’2
Decimal, n@16_’2
TAK/NIE
Byte(0,1) lub
Byte(0,1)
Generalnie: Nie stosować liczbowego picture, w którym grupowanie tysięcy następuje
przecinkiem (chyba domyślny - używać spacji, np. nie n10.2 - ale n10_.2


Wydaje się słusznym opracowanie własnej puli typów i używanie ich podczas definiowania tablic w słowniku

Brak komentarzy:

Współtwórcy