-
Notifications
You must be signed in to change notification settings - Fork 0
Description
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
- W
Makefile
używamy spacji poza przypadkami, gdzie taby są wymagane składniowo.- Taby wymagane są jedynie wewnątrz definicji targetów.
- 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
-
Preferowane:
verifier!dependencies: \ $(VERIFIER_SOURCE) \ build/repositories/golem/ \ build/verifier/golem/scripts/ \ build/verifier/golem/imgverifier-requirements.txt
Ten wariant jest najczytelniejszy i zalecany.
-
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. -
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...
-
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. -
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.
-
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ść.