كيفية التوصل إلى أسماء ذات معنى لرمزك

فيما يلي ترجمة المقال من مدونة Better Programming على موقع الويب Medium. في ذلك ، يشارك مبرمج Daan قواعد بسيطة ، والتي يمكنك من خلالها إعطاء أسماء جيدة للوظائف والمتغيرات.



كمطور ، ربما تقضي الكثير من الوقت في إنشاء المتغيرات والخروج بأسمائها. الأسماء موجودة في كل مكان: فهي مطلوبة للملفات والفئات والأساليب والمتغيرات نفسها.

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

استخدم الأسماء التي تكشف عن نواياك


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

والقاعدة هي: إذا كان اسم يتطلب تعليق ، فإنه لا ينقل النية.

يوجد متغير في مقتطف الرمز هذا ليس غرضه واضحًا:

<?php private $s; // Time in seconds 

لا يخبرنا متغير $s بأي شيء ولا يرتبط بفترة زمنية. من الأفضل اختيار الاسم الذي سيشير إلى ما وفي الوحدات التي يتم قياسها.

سيكون أحد الأسماء أدناه أكثر ملاءمة.

 <?php private $days_since_creation; private $elapsed_time_in_seconds; private $seconds_since_last_modified; 

أسماء النوايا تجعل فهم الكود أسهل ، وبالتالي الحفاظ عليه أسهل.

سوف تقضي وقتًا في اختيار الاسم الصحيح ، ولكن يمكنك حفظه في المستقبل.

النظر في هذا المثال:
 <?php function getList() { $list1 = []; foreach ($this->the_list as $x) { if ($x % 2 != 0) { $list1[] = $x; } } return $list1; } function getOddNumbers() { $odd_numbers = []; foreach ($this->numbers as $number) { if (isOdd($number)) { $odd_numbers[] = $number; } } return $odd_numbers; } 

ما سبب صعوبة فهم وظيفة getList ؟ بدون تعبيرات معقدة ، يتم محاذاة الكود وتنسيقه بشكل صحيح ، فقط ثلاثة متغيرات ولا شيء أكثر من ذلك.

الآن انظر إلى وظيفة getOddNumbers . هل رأيت أنها تفعل نفس الشيء مثل getList ؟

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

تغيير بسيط في الاسم - ومن السهل بالفعل فهم ما يحدث.

تجنب التضليل


حاول تجنب الارتباطات الخاطئة التي تشوه الغرض من الكود.

لا تستخدم الكلمات التي يمكن فهمها بطريقة مختلفة عما كنت تقصد. على سبيل المثال ، لا تقم productList منتجات مجموعة المنتجات ، إلا إذا كان بالفعل كائنًا من النوع List . قد يؤدي هذا الاسم إلى استنتاجات خاطئة. من الأفضل استخدام products فقط.

ربما تبدأ أسوأ أسماء المتغيرات بحرف كبير O وحرف صغير L ، لأن هذه الأحرف تشبه إلى حد كبير 0 و 1.

كن حذرًا أيضًا مع الأسماء التي تختلف قليلاً عن بعضها البعض. كم من الوقت SomeMethodForEfficientHandlingOfFiles حتى تلاحظ اختلافًا بسيطًا بين SomeMethodForEfficientHandlingOfFiles في ملف واحد و SomeMethodForEfficientStorageOfFiles في ملف آخر؟ توافق ، للوهلة الأولى أنها متطابقة.

تسليط الضوء على الاختلافات ذات مغزى


استخدام الترقيم ليس أفضل طريقة للتسمية. هذه الأسماء غير معلوماتية ، لأنها لا تكشف عن نوايا المؤلف على الإطلاق.

لنلقِ نظرة على المثال التالي:

 <?php public function duplicateArray($arr1, &$arr2) { foreach ($arr1 as $key => $value) { $arr2[$key] = $value; } } 

ستتم قراءة مقتطف الشفرة هذا بشكل أفضل إذا قمنا بإعادة تسمية $arr1 و $arr2 إلى $source $destination .

استخدم أسماءًا يمكنك نطقها


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

افترض أن لديك متغيرًا يطلق عليه $xsq وغالبًا ما $xsq مع الشركة. وهنا تتحدث مع زميل له:
- حسنا ، ما هو مع السابقين خيط؟
- مع ماذا؟ مع قائمة انتظار الوصول؟

سيقوم بعض المطورين نطق اسم المتغير ككلمة ، والبعض الآخر اختصار.

استخدم أسماء قابلة للبحث


المشكلة في أسماء الحروف المفردة هي أنه يصعب العثور عليها في الكود.

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

الموقف الوحيد الذي يستحق فيه استخدام أسماء من حرف واحد هو اختراع أسماء للمتغيرات المحلية داخل الأساليب القصيرة.

بادئات عضو الفئة


لا تستخدم البادئات m_.

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

بدلاً من ذلك ، يمكنك استخدام IDE (أو تثبيت البرنامج المساعد) ، والذي يسلط الضوء على المتغيرات اعتمادًا على نطاقها.

فكر في الكود الخاص بك كنقطة نزهة في الغابة - اتركه أكثر نظافة مما كان عليه قبل وصولك.

استنتاج


هذه هي الطريقة التي يتم بها إنشاء أسماء أكثر شمولية للرمز.

تعليق ، اترك أسئلتك واكتب إذا كنت تريد مني تغطية المواضيع الأخرى المتعلقة بالبرمجة.

هذه المقالة مستوحاة من كتاب روبرت مارتن Clean Code ، الذي أوصي بشدة بقراءته.

Source: https://habr.com/ru/post/ar459793/


All Articles