Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wcięcia i kontynuacje linii w Makefile #16

Open
cameel opened this issue Aug 14, 2018 · 1 comment
Open

Wcięcia i kontynuacje linii w Makefile #16

cameel opened this issue Aug 14, 2018 · 1 comment

Comments

@cameel
Copy link
Member

cameel commented Aug 14, 2018

Nie mamy spisanych zasad dla Makefile, i wyłapałem właśnie w review kilka kosmetycznych problemów, których można by łatwo uniknąć, więc proponuję dodać kilka zasad do wiki:

Spacje i wcięcia

  1. W Makefile używamy spacji poza przypadkami, gdzie taby są wymagane składniowo.
    • Taby wymagane są jedynie wewnątrz definicji targetów.
  2. Wcięcia powinny mieć długość 4 spacji (jak w całej reszcie naszego kodu).

Przykład
Miejsca gdzie wystepują taby zastąpione zostały znakami »»»».

VARIABLE := \
    value1  \
    value2  \
    value3

target:           \
    prerequisite1 \
    prerequisite2 \
    prerequisite2
»»»»command1
»»»»command2
»»»»command3

Kontynuacje linii

  1. Preferowane:

    verifier!dependencies:                                \
        $(VERIFIER_SOURCE)                                \
        build/repositories/golem/                         \
        build/verifier/golem/scripts/                     \
        build/verifier/golem/imgverifier-requirements.txt

    Ten wariant jest najczytelniejszy i zalecany.

  2. Dozwolone:

    verifier!dependencies: \
        $(VERIFIER_SOURCE) \
        build/repositories/golem/ \
        build/verifier/golem/scripts/ \
        build/verifier/golem/imgverifier-requirements.txt

    Ten wariant jest dozwolony w sytuacjach gdy edytor nie pozwala nam łatwo wyrównać kontynuacji albo gdy edytujemy w sytuacji gdy znaki nie mają stałej szerokości.
    Wariant pierwszy jest mimo wszystko mocno preferowany.
    Kontynuacje linijek dodają trochę zbędnego wizualnego szumu do definicji, a większość edytorów spokojnie poradzi sobie z wygodną edycją wariantu 1.

  3. Dozwolone:

    verifier!dependencies:                                     \
        $(VERIFIER_SOURCE)                                     \
        build/repositories/golem/                              \
        build/verifier/golem/scripts/                          \
        build/verifier/golem/imgverifier-requirements.txt

    Aby uniknąć zbyt częstego przesuwania kontynuacji można dodać trochę więcej odstępu...

  4. Zabronione:

    verifier!dependencies:                                                                                                                                                        \
        $(VERIFIER_SOURCE)                                                                                                                                                        \
        build/repositories/golem/                                                                                                                                                 \
        build/verifier/golem/scripts/                                                                                                                                             \
        build/verifier/golem/imgverifier-requirements.txt

    ... ale nie aż tyle, żeby odstępy były schowane poza krawędzią ekranu.
    Granica nie jest sztywno określona - po prostu w razie wątpliwości lepiej dać mniejszy odstęp niż większy.

  5. Zabronione:

    verifier!dependencies: \
        $(VERIFIER_SOURCE)                                          \
        build/repositories/golem/                     			    \
        build/verifier/golem/scripts/                               \
        build/verifier/golem/imgverifier-requirements.txt

    Wszystkie kontynuacje powinny być na tym samym poziomie. Powinny też być wyrównane wyłącznie za pomocą spacji.

  6. Zabronione:

    verifier!dependencies:      \
        build/repositories/dir1/\
        build/repositories/dir2/\
        build/repositories/dir3/

    \ po powoduje po prostu sklejenie ze sobą kolejnych linijek, bez żadnej spacji między nimi. Żeby uniknąć uzyskana jednego, długiego ciągu znaków, bez żadnych przerw musimy sami zadbać, aby dodać jakiś odstęp. Samo wcięcie już ten odstęp zapewnia, ale są sytuacje w których kolejne linijki nie mają wcięcia. Z tego powodu dobrze jest zadbać żeby mimo wszystko zawsze tuż przed znakiem \ była co najmniej jedna spacja. Poprawia to też trochę czytelność.

@cameel
Copy link
Member Author

cameel commented Aug 17, 2018

Update: dodałem antyprzykład 6 i info o 4-znakowych wcięciach.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant