قواعد التسمية
Last updated
Last updated
استعمل _ (underscore) بدلاً من - (dash) في كل مكان (أسماء الموراد، أسماء مصادر البيانات، أسماء المتحولات، أسماء المخرجات الخ..)
فضل استعمال الأحرف الصغيرة (lowercase) والأرقام فقط (حتى لو كان نظام UTF-8 مدعوماً)
لا تكرر نوع المورد في اسم المورد (ليس جزئيًا أو كليًا):
resource "aws_route_table" "public" {}
resource "aws_route_table" "public_route_table" {}
resource "aws_route_table" "public_aws_route_table" {}
يجب تسمية المورد باسمthis
إذا لم يكن هناك اسم وصفي وعام متاح، أو إذا كانت وحدة الموارد تنشئ موردًا واحدًا من هذا النوع (كمثال في يوجد فقط مورد وحيد من النوعaws_nat_gateway
وعدة موارد من النوع aws_route_table
لذلك يجب تسمية المورد من نوعaws_nat_gateway
باسم this
ويجب أن نستعمل أسماء وصفية اكثر من أجل موارد النوع aws_route_table
مثلprivate
, public,
database)
استخدم دائمًا الأسماء المفردة للتسمية.
استعمل - (dash) داخل قيم الوسيطات وفي الأماكن التي ستتعرض فيها القيمة للبشر (على سبيل المثال ، اسم DNS لخادم افتراضي RDS).
استعمل الوسيطان count
/ for_each
داخل المورد أو داخل مصدر البيانات كأول وسيط وقم بإضافة سطر فارغ بعده
استعمل الوسيطtags
إذا كان مدعوماً من قبل المورد كأخر وسيط متبوع بالوسيطاتdepends_on, lifecycle
إذا احتجت إليها، كل منها مفصول عن الأخر بسطر فارغ.
عند استعمال شروط للوسيطان count
/ for_each
ففضل استعمال القيم المنطقية عوضاً عنlength
أو أي تعابير أخرى
count
/ for_each
في الكودtags
في الكودcount
في الكودلا تعيد اختراع العجلة في وحدات الموارد: استخدم الاسمname
والوصفdescription
والقيمة الافتراضية default
للمتحولات كما هو محدد في قسم "Argument Reference" للمورد الذي تعمل معه.
عملية التحقق (Validation) من المتحولات محدود نوعًا ما (على سبيل المثال ، لا يمكن الوصول إلى متحولات أخرى أو إجراء عمليات بحث). خطط وفقًا لذلك لأنه في كثير من الحالات تكون هذه الميزة غير مجدية.
استخدم صيغة الجمع في اسم متحول عند يكون نمطهlist
أوmap
.
قم بترتيب الأقسام في المتحول كالتالي:description
ثمtype
ثمdefault
وأخيراًvalidation
دائماً قم بإضافة قسمdescription
إلى كل المتحولات حتى لو كنت تظن أنه واضح (ستحتاجه في المستقبل)
فضل استعمال الأنواع البسيطة (number
, string
, list(...)
, map(...)
, any
) على الأنواع الأخرى مثلobject،
إلا إذا كنت تحتاج قيود صارمة على كل key
استعمل الأنماط المحددة مثلmap(string)
في حال كانت كل العناصر الموجودة داخلها من نفس النمط أو كان يمكن تحويلها إلى هذا النمط (مثلاً النمطnumber
ممكن تحويله إلى النمطstring)
استعمل النمط any
لتعطيل التحقق من النوع بدءاً من عمق معين أو عندما يجب دعم أنواع متعددة
القيمة {} هي عبارة عن map في بعض الأحيان وobject في أحيان أخرى. استعمل ()tomap لجعلها من النمط map دائماً.
اجعل المخرجات متسقة ومفهومة خارج سياقها ( عندما يتم استعمال وحدة من قبل مستخدم يجب على المخرجات أن تكون واضح ما هو نمط وما صفات القيمة التي ترجعها)
يجب على اسم الخرج أن يصف القيمة التي يرجعها وأن تكون أقل حرية مما تريد عادة.
الشكل الجيد لاسم الخرج يكون كالتالي {attribute}_{type}_{name}
حيث:
إن {name}
هو اسم المورد أو اسم مصدر البيانات بدون اسم الموفر. كمثال للمورد aws_subnet
يكون الاسم هوsubnet
وللموردaws_vpc
يكون vpc
إن {type}
هو نمط الخرج الئي نتعامل معه
إن{attribute}
هو الصفة المخرجة
دائماً قم بإضافة قسمdescription
إلى كل المخرجات حتى لو كنت تظن أنه واضح
تجنب وضع وسيط sensitive
إلا إذا كنت تملك تحكم كامل باستعمال هذا الخرج في كل الأماكن في كل الوحدات
فضل استعمال ()try
(متوفرة منذ الإصدار 0.13) على استعمال element(concat(...))
(التي كانت تستعمل قبل 0.13)
تعيد على الأكثر Security group ID وحيد
عند وجود عدة مصادر من نفس النمط، يجب حذفthis
من الخرج:
إذا كانت قيمة الخرج عبارة عن list فإنه يجب أن نستعمل اسم جمع :
.
إذا كان الخرج يعيد قيمة مع استعمال interpolation functions وعدة موارد فيجب على {name} و{type}
أن تكون معممة قدر الإمكان (this يجب حذفها)
إذا كانت قيمة الخرج عبارة عن list فإنه يجب أن نستعمل اسم جمع