Formatowanie Kodu

Jak formatować kod SQL żeby był czytelny? Każdy zespół czy firma ma swoje własne zasady i nie ma tu jednej poprawnej odpowiedzi jak należy to robić. Ważne by wszędzie było tak samo i żeby dla każdego było to czytelne. Nie ma najlepszego sposobu formatowania więc zawsze jeden może być dla kogoś lepszy od drugiego i odwrotnie 🙂 Poniżej przedstawię kilka kawałków kodu i opiszę jakie zasady formatowania staram się zachowywać.

Ten kurs jest częścią cyklu Kurs SQL

Formatowanie DDL

W pierwszej kolejności opiszę na przykładzie jak staram się formatować kod do definiowania struktury danych:

CREATE TABLE TEST_TABLE (
    ID             NUMBER GENERATED ALWAYS AS IDENTITY
  , KOLUMNA_NR_DWA DATE NOT NULL
  , BAR            VARCHAR2(100 CHAR)

  , CONSTRAINT ID_PK PRIMARY KEY (ID)
);

A więc jakie zasady formatowania starałem się tu zawrzeć?

  1. Nazwy oddzielone znakiem podkreślenia
  2. Wszystko dużymi/małymi literami.
  3. Przecinki z przodu, nie na końcu.
  4. ID zawsze jako pierwsza kolumna
  5. Pierwsza kolumna z 4 spacjami odstępu. Tak aby wszystkie kolumny zaczynały się w tym samym miejscu.
  6. Kolejne kolumny: Dwie spacje, przecinek, spacja i nazwa kolumn.
  7. Typy danych w tej samej linii
  8. Typ danych varchar2 zawsze z typem np. “CHAR”
  9. Constrainty na końcu, pierw PK dalej FK
  10. Kolumny NOT NULL na początku. W kursie kolejność kolumn w tabeli opisuję dlaczego staram stosować się, tą zasadę.

Formatowanie zapytań

Nieco inne jednak w podobnym duchu formatowanie staram się zachować przy zapytaniach:

SELECT
    TT.FOO
  , TT.BAR
  , OT.XYZ
FROM TEST_TABLE TT
LEFT JOIN OTHER_TABLE OT ON OT.ID = TT.ID
                        AND OT.EFF_DATE > SYSDATE
WHERE 1 = 1
  AND TT.CODE = 'JAN';

Jakie zasady formatowania starałem się tu uwzględnić:

  1. SELEKT i nowa linia
  2. Wszystko dużymi/małymi literami
  3. Pierwsza kolumna z 4 spacjami
  4. Każda kolejna kolumna: Dwie spacje, przecinek, spacja, reszta
  5. Jeżeli występują aliasy używam ich wszędzie
  6. FROM i pierwsza tabela
  7. Każdy JOIN jako osobna linia
  8. W JOIN po ON i lewej stronie warunków podaję kolumny z tabeli joinowanej
  9. Przy JOIN ON i AND i kolejne warunki kończące się w tej samej linii
  10. Przy joinach NIE używać Oraclowych (+)
  11. WHERE 1=1
  12. Warunki w kolejnych liniach, jeden warunek na jedną linię
  13. AND/OR po lewej stronie

Często słyszę pytania po co dodaję 1=1 przy warunku WHERE i odpwfoedzi dlaczego tak robię są dwie:

  1. Wymusza to dodawanie AND po lewej stronie przez co łatwiej jest komentować poszczególne warunki w trakcie pisania kodu
  2. Gdy piszemy w PL/SQL czasami potrzebujemy dynamicznie dodać warunki do ograniczeń WHERE. jeżeli byśmy nie dodali 1=1 po where to tworząc dynamicznie pytanie musielibyśmy rozróżniać czy dany warunek jest pierwszy czy nie i wtedy odpowiednio dodawać AND lub nie dodawać przed warunkiem. Dodanie WHERE 1=1 powoduje, że zawsze dodajemy warunek z AND na początku niezależnie który w kolejności jest to warunek. Co prawda w pisaniu po prostu zwykłego selekta nie ma to żadnego znaczenia ale już mam takie przyzwyczajenie 🙂

Automatyczne formatowanie kodu w SQL Developerze

Powyżej przedstawiłem swoje propozycje na to jak formatować kod. Jest to czysto subiektywne odczucie czy takie formatowanie się podoba i jest czytelne czy nie 🙂 Istnieją jednak możliwości automatycznego formatowania kodu. Dla przykładu SQL Developer posiada dwie funkcje pomagające szybko sformatować kod.

Pierwsza funkcja układa kod w odpowiedniej kolejności np. miejsca przecinków, podział na nowe linie czy odstępy. W SQL Developerze służy do tego skrót CTR+F7. Powyższe zapytanie po domyślnym sformatowaniu wygląda jak poniżej:

SELECT
    tt.foo,
    tt.bar,
    ot.xyz
FROM TEST_TABLE TT
    LEFT JOIN other_table   ot ON ot.id = tt.id
                                AND ot.eff_date > SYSDATE
WHERE 1 = 1
    AND tt.code = 'JAN';

W SQL Developerze istnieje możliwość definiowania własnego standardu formatowania kodu w zakładce: Preferences -> Cod Editor -> Format -> Advence Format.

formatowanie kodu ustawienia sql-developer

Kolejną funkcją formatującą kod w SQL Developerze jest możliwość automatycznej zmiany wielkości liter poprzez skrót: ALT + quote. Przycisk quote to ten z cudzysłowiem (“). Istnieje kilka trybów formatowania wielkości liter więc należy klikać aż dojdziemy do interesującego nas standardu. Zamiast ALT + quote można z edytora użyć dedykowanego przycisku:

automatyczne formatowanie wielkości liter

Podsumowanie

  • Nie ma najlepszego sposobu formatowania
  • Ważne by stosować ten sam sposób formatowania
  • Jeżeli nie wiemy jak formatować skorzystajmy z gotowych narzędzi
  • Rozszerzeniem tematu formatowania kodu sql jest kurs dotyczący Code Review SQL.
  • Jeśli chcesz być na bieżąco obserwuj mój profil na: Facebooku

  • Jeżeli chcesz znaleźć więcej kursów dla średniozaawansowanych oraz poznać zasady optymalizacji zapytań zapoznaj się z pozostałymi kursami, sprawdź: Kurs Oracle SQL
  • Jeżeli chcesz poznać podstawy baz danych i kurs dla początkujących w SQL odwiedź Kurs SQL

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *