كيفية اختيار أفضل الاتفاقيات رمز بالنسبة لك وفريقك

ضع حدا للجدل الذي لا ينتهي

الصورة من قبل جون جاكسون على Unsplash

- "اسمع ، تلك المتغيرات الخاصة يجب أن تلاحق المتغيرات العامة!"
- "لا يمكن! المتغيرات العامة تذهب قبل القطاع الخاص! "
- "دعنا نسأل Deb ، ودعها تقرر"
- "انتظر ، لماذا ليست هذه الثوابت مغلفة بالإبل؟"

‍♂ ‍♀

ارفع يدك إذا وجدت نفسك في هذا النوع من المناقشة من قبل. حسنًا ، لا تثيرها حقًا ، ولكن هناك شيء يخبرني أن بعضًا منكم شارك في هذا السيناريو مرة أو مرتين.

بصفتي مطورًا على مدار العقد الماضي ، وجدت نفسي في عدد قليل جدًا ، وقد يقول البعض مناقشات كثيرة حول اتفاقيات الرموز. هذه المناقشات ، بقدر ما هي مفيدة ، تتدهور في بعض الأحيان إلى تمزقات فلسفية لا تنتهي أبدًا. ثم يبدأون في التحول إلى مواضيع تتراوح من المسافة البادئة إلى بنية المجلد.

يمكن أن تكون مؤلمة.

لذلك ، كيف يمكنك أن تقرر حقا ما هو أفضل اتفاقية ، والأفضل من ذلك ، حتى أفضل الاتفاقيات موجودة؟ سأضعها هنا ، حتى تتمكن من وضع هذه الألغاز الفلسفية في مكانها ، إلى الأبد.

فلماذا نحتاج حتى الاتفاقيات؟

من أجل تحديد ماهية أفضل اتفاقية وما إذا كانت موجودة ، يجب أولاً أن نفهم لماذا نحتاج حتى إلى اصطلاحات.

هناك أكثر من بضعة أسباب ، لكنني سأركز على أهمها: قابلية القراءة.

ماذا لو قررت التبديل إلى الكتابة في قبعات فقط. مثل هذا ، الذي قد يبدو غريبا. لاحظت ذلك على الفور ، وبدأ عقلك في معالجة الأمور المختلفة.

خذ هذا المثال البسيط ، وفكر في تغيير التسمية أو المسافة البادئة. إذا كنت في كل مرة تقوم فيها بالعودة إلى الرمز وتم كتابته بطريقة مختلفة ، فسيكون الأمر كما لو كنت تبدأ من المربع رقم واحد. ولكن عندما يكون الترميز باستخدام اصطلاحات ، يصبح من السهل فهم التعليمات البرمجية الخاصة بك ، وبالتالي يمكن قراءتها ، حتى لو كانت مكتوبة قبل شهور.

يصبح هذا أكثر أهمية عند العمل على فريق من المطورين ، حيث يكتب كل منهم الكود الخاص بهم مع اصطلاحهم المفضل. سيستغرق مقدار الوقت المستغرق في فهم ومراجعة شفرة الآخر ... جيدًا ... ستحصل على هذه النقطة.

من أجل التعاون مع المطورين الآخرين بكفاءة ونوعية ، يجب أن يكون لديك اتفاقية مشتركة.

"يجب كتابة البرامج ليتم قراءتها من قِبل الأشخاص ، وبالمناسبة ، حتى يتم تنفيذ الآلات." - Hal Abelson

كيفية اختيار أفضل اتفاقية رمز

سواء أكنت بدأت للتو الترميز أم أنك جزء من فريق kickass dev ، أو إذا أصبحت مديرًا مؤقتًا للتو ، فكيف يمكنك اختيار اصطلاحات التعليمات البرمجية الخاصة بك؟

إليك دليلي لاختيار أفضل اتفاقية رمز:

  1. احصل على الإلهام من فرق التطوير التي تعجبك: لا شيء يتفوق على التجربة ، وبعض الشركات الأكبر والأذكى تنشر إرشادات الترميز الخاصة بها. على سبيل المثال ، نشرت Airbnb أدلة نمط جافا سكريبت وروبي ، ونشرت جوجل أدلة أسلوب جافا وبيثون الخاصة بهم. سواء أكنت تحب هذه الشركات أم لا ، إذا لخصت سنوات الخبرة التي عاشها كل من مطوريها ، فستضيف ما يصل إلى gazillion. حاول تطبيق بعض أدلة أسلوب هذه الشركات على فريقك.
  2. اكتساب المعرفة من زملائك: نحن محظوظون لأن نكون جزءًا من مجتمع ديناميكي من هذا القبيل. في الواقع ، مجتمعنا هو أحد أكبر مزايا كونك مطورًا اليوم. سواء على Slack أو Spectrum أو Discord أو أي نظام أساسي collab ، يمكنك دائمًا العثور على مجموعات مطلعة لنشر سؤال حول اتفاقيات الرموز والحصول على إجابات من devs حول العالم ، على الفور.
  3. تجاهل عينات الكود. نعم ، فقط تجاهلها. بين الحين والآخر أتعثر على رمز تم نسخه / لصقه من إجابة على Stackoverflow ، أو شيء مشابه. ما ينسى الناس في بعض الأحيان هو أن نماذج التعليمات البرمجية التي نسختها للتو قد تكون مكتوبة كإجابة على سؤال فني ، أو كتفسير لبعض المكتبات. في معظم الحالات ، لا يعني الكاتب أو لم يكن لديه وقت للتعامل مع اصطلاحات الكود.

يجب أن تساعدك هذه النصائح على البدء ، ويمكن أن تضع الأساس لتقديم اصطلاحات الكود لفريق التطوير لديك.

والآن لبعض الفلسفة.

هل توجد اصطلاحات "أفضل"؟

هذا يعتمد على معنى "الأفضل". إذا كان Airbnb أو Google يستخدمان اتفاقية معينة ، أو إذا أخبرتك 10 مديريات تقنية مختلفة بأن مؤتمرهم هو الأفضل - هل يعني ذلك أنه أفضل اتفاقية بالنسبة لك؟

علاوة على ذلك ، الاتفاقيات عرضة للتغيير. هل يمكن تسمية شيء يتغير بمرور الوقت على أنه الأفضل؟

عندما بدأت في Lemonade كمطور الواجهة الأمامية الوحيد ، وجدت صعوبة في قراءة الكود الذي كتبه dev السابق. ربما كان أفضل اتفاقية له ، لكنها لم تكن بالنسبة لي. لذا ، أعدت كتابة كل جزء من الكود الذي عملت عليه باستخدام اتفاقياتي. مع مرور الوقت ، انضم المزيد من المطورين إلى الفريق وتطورت اتفاقياتنا.

كل ديف جاء من خلفية متنوعة ، مع معايير واتفاقيات مختلفة. لإضفاء الطابع الرسمي على اتفاقياتنا ، استخدمنا دليل أسلوب جافا سكريبت Airbnb كنقطة انطلاق. لقد راجعنا الاتفاقيات الواردة في هذا الدليل وقمنا بتغيير أو حذف الاتفاقيات التي لم نتفق معها ، واعتمدنا الاتفاقيات التي أحببناها. حتى أننا اعتمدنا اتفاقيات devs المستمدة من تجربتهم الخاصة ، ودمجناها في الاتفاقية الرئيسية الخاصة بنا.

إن عملية تقييم كل اتفاقية وتحديد ما إذا كان ينبغي لنا اعتمادها ، ليس فقط تحسين قابلية قراءة الشفرة الخاصة بنا ولكن أيضًا تحسين عملنا الجماعي. (المزيد عن ذلك في منشور مستقبلي!)

هذه هي الحقيقة الصعبة: لا يوجد تعريف عالمي لأفضل الاتفاقيات ، لأنها ببساطة غير موجودة.

على عكس ما تم تدريسه في المدرسة ، لا توجد دائمًا إجابة واحدة صحيحة لكل سؤال. في هذه الحالة ، يمكن أن يكون هناك الكثير منهم.

للمطورين طرق مختلفة لتنفيذ أشياء مختلفة أو حتى نفس الأشياء. يفضل البعض منا أن تبدأ أسماء أعضاء الفصل ببادئة "m_". يحب البعض منا استخدام مسافة بادئة للمسافات ، والبعض يفضل علامات التبويب ، وقد يقول البعض أن استخدام كلمة Utils في اسم الفئة أمر خاطئ. الجيز ، هذه مناقشة لا نهاية لها ، ولكن كل هذه التفضيلات تأتي مع منطق جيد.

في نهاية اليوم ، كل ما يتعلق الأمر هو الذي يؤدي إلى تحسين إمكانية قراءة التعليمات البرمجية الخاصة بك. أيهما يسمح لفريقك بالتواصل بشكل أفضل والمضي قدمًا بشكل أسرع وبكفاءة أفضل.

تذكر أن اصطلاحات الكود هي مجرد اقتراحات. نعم ، بمجرد اتخاذ قرار بشأن اتفاقية لاستخدام ، يجب عليك متابعة. لكن تذكر: إنهم ليسوا منقوشين بالحجر وهم عرضة للتغيير. اسمح لنفسك بتجربة اتفاقيات مختلفة حتى تجد أفضل ما يناسبك أنت وفريقك.

إذن ما هي أفضل اتفاقيات الرمز؟ سهل - لك!