Mở rộng đệ quy

Không sử dụng mở rộng đệ quy trong tệp cấu hình sản phẩm/bảng. Mở rộng đệ quy là việc sử dụng = thô thay vì := để gán biến trong tệp tạo tệp. Nó khiến các biến được đặt thành giá trị của các biến khác không đánh giá các biến khác đó cho đến khi chính chúng được đánh giá. Đây là chức năng mà Starlark không hỗ trợ.

Loại bỏ nó phần lớn phụ thuộc vào kịch bản cụ thể về cách nó được sử dụng. Hầu hết thời gian nó liên quan đến việc di chuyển các phép gán biến đến trước nơi chúng được sử dụng. Ví dụ: thay thế:

MY_VAR_2 = foo
# Some stuff in between...
MY_VAR = $(MY_VAR_2)
MY_VAR_2 = bar
# $(MY_VAR) is bar here.

với:

MY_VAR_2 := foo
# Some stuff in between...
MY_VAR_2 := bar
MY_VAR := $(MY_VAR_2)
# $(MY_VAR) is bar here.

Nối vào một biến với += sử dụng mở rộng đệ quy nếu biến đó chưa được gán với mở rộng đơn giản trước đó. Nếu bạn không chắc liệu biến đã được gán trước đó hay chưa, thì += có thể được thay thế bằng MY_VAR := $(strip $(MY_VAR) new_value) .

Loại bỏ mở rộng bị trì hoãn cũng có thể tăng tốc độ đánh giá Makefiles ngay cả trước khi quá trình chuyển đổi sang Starlark hoàn tất. Nếu các biến được đặt thành kết quả của các lệnh gọi hàm đắt tiền, thì hàm đó sẽ chỉ được gọi một lần với phần mở rộng đơn giản nhưng có khả năng nhiều lần với phần mở rộng đệ quy.