كتاب clean code عربي - ملخص كتاب clean code الشهير الجزء الثاني

كتابة clean code

كتابة كود نظيف أمر في غاية الأهمية، وأصبحت أهميته أمر لا يخفي على أي مبرمج يريد أن يكون مبرمج قوي، ومن أهم مبادئ الـ clean code تسمية المتغيرات والدوال ... إلخ بأسماء معبرة meaningful names، هذا هو المقال الثاني لتعلم كتابة كود نظيف من كتاب clean code عربي، سعدت بوجودك في هذا المقال.

كتاب clean code عربي
كتاب clean code عربي - ملخص كتاب clean code الشهير الجزء الثاني

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

نصائح لكتابة clean code

 الطريقة الوحيدة لتتحرك أسرع هو أن تسير بشكل جيد "The only way to go faster is to go well" 


النصيحة الأولىأترك المخيم أكثر نظافة مما وجدته "Leave the campground cleaner than you found it"

 هذه قاعدة شائعة عند فرقة الكشافة الأمريكية The Boy Scouts Rule، نقلها العم بوب ليوصل فكرة أنه يجب دائمًا إذا كنت تعمل على كود شخص آخر ألا تتركه كما أخذته بل أتركه أفضل مما أخذته، أجعله clean code أكثر، أولا لكي تستطيع أن تكتب كودك أنت بشكل جيد؛ فإذا كنت لا تستطيع فهم كود زميلك في المشروع فكيف ستضيف إليه أنت ؟! وثانيا لكي يكون المشروع بالكامل في النهاية clean code.

النصيحة الثانيةلا أريد أن أرى أكواد برمجية، أريد أن أرى كلام بالإنجليزي

أعتقد أنك بالفعل مررت على أشياء مثل المتغيرات (variables)، الثوابت (constants)، الكلاسات (classes)، والدوال وغيرها. كل هذه الأشياء ينبغي عليك أن تسميها بأسماء معبرة تشير إلى الغرض منها أو الوظيفة الحقيقية التي ستقوم بها. فمثلاً، أنا أريد أن أقوم بعمل دالة تجمع رقمين وسميتها int Ali()، والبرنامج صحيح ويعمل وكل الأمور تمام. في الحقيقة سيعمل البرنامج لكن الأمور ليست تمام أبداً. أترك اللابتوب 10 دقائق فقط وأخبرني، هل تذكرت ماذا كانت تفعل هذه الدالة؟

إذا كنت تعمل على مشروع كبير فمن الأكيد أنه سيحدث معك أخطاء منطقية Bugs عند تشغيل البرنامج لأول مرة (شئ معتاد لأي مبرمج) وفرضا أنه كان مشروع ألة حاسبة وكان الخطأ في عملية الجمع 2+2=5؛ فطبيعي أنك سترجع إلي الكود الذي كتبته، ومن الطبيعي ايضا أنك سترجع مباشرة إلى الدالة التي تقوم بعملية الجمع فقط وتصلحها حفاظاً على الوقت والمجهود؛ إذن كيف سترجع إليها وأنت تسمي دالة الجمع Ali ودالة الطرح Ahmed ودالة الضرب Omar، لكن لو كنت سميت الجمع Add والطرح Subtract والضرب Multiply. أحكم بنفسك شئ بسيط لكن يفرق كثيرا.

الأمر الآخر، ينبغي الوضع في الحسبان أن ليس كل من يقرأ الكود هم المبرمجين؛ فهناك أمور من المشروع ينبغي أن يطلع عليها العميل أو مديرك في الشركة والذي يكون في كثير من الأحيان غير مبرمج؛ فهنا ينبغي أن تكون الأكواد معبرة عن نفسها كأنه يقرأ إنجليزي وليس كود برمجي (تعريف ما هو clean code).

(مثال للتوضيح بــ ++C )

كتاب clean code عربي

👇👇

كتاب clean code عربي

  •  التعليق الذي وضعته في الكود السابق ينافي قواعد الكود النظيف، وأعتقد أنك تعرف السبب يصديقي!

النصيحة الثالثة: استخدم الأدوات للتسهيل

 إذا كنت تعمل على برنامج كبير وتكتب كمية ضخمة من الأكواد؛ فمن المؤكد أنك ستكرر بعض الدوال والمتغيرات وغيرها في أكثر من موضع من البرنامج؛ لذلك لا بد أن تستخدم أدوات تساعدك في التعديل على اسم دالة معينة مثلا في البرنامج كله مرة واحدة (من غير المنطقي أن تذهب وتعدل اسم الدالة في كل مكان يدويا) وستمكنك من عمل Refactoring بطريقة سهلة وسلسة. 

يمكنك إستخدام أدوات قوية  للقيام بذلك مثل التي توجد في IntelliJ، إكلبس (Eclipse)، بايشرم PyCharm.

النصيحة الرابعة: أستخدم مصطلحات الــ business domain

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

النصيحة الخامسة: لا ستخدم الإختصارات أبدا "Never Use Abbreviations"

هذا الخطأ معظمنا يقع فيه؛ وهو عند تسمية متغير معين وليكن اسمه Temporary فطبعاً نسميه Temp كسلاً أو توفيراً للوقت، ويؤسفني يصديقي أن أخبرك أن هذا خطأ ولا يؤدي إلى أن يكون الكود نظيف، فإذا نظر أحد أخر إلى هذا المتغير ماذا يدريه أنه Temporary أم Temperature ( أنا أتحدث عن مشروع كبير ألاف الأسطر من الكود).

النصيحة السادسة: لا تجعل الفرق غير واضح "Never Use Names That Vary In Small Ways"

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

(مثال للتوضيح بــ ++C )

كتاب clean code عربي


النصيحة السابعة: تجنب تماماً إختيار أسماء لها نفس المعنى أو قريبة

ما الفرق بين (customer  و CustomerObject) لا فرق كلاهما نفس المعني والدلالة فيحدث إلتباس. وايضاً مثلاً ما الفرق بين ProductInfo و ProductData ؟!

النصيحة الثامنة: أختر أسماء سهلة النطق "Use Pronounceable Names "

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

النصيحة التاسعة: لا تمنع الــ IDE أن يساعدك في رحلة كتابة الكود النظيف

تجنب إستخدام إختصار واحد لكل المتغيرات داخل نفس الــ Module؛ لأنه حينما تستدعي أحد هذه المتغيرات سيقترح عليك الــ IDE الذي تستخدمه كل المتغيرات الموجودة داخل هذا الــ Module وسيكون حينها الإختيار صعب عليك.

النصيحة العاشرة: لا تستخدم رموز غريبة في الأسماء "Avoid Encoding"

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

النصيحة الحادية عشر: أستخدم البادئات المفهومة من الجميع

حينما تسمي دالة تعدل على قيمة(الــ setter) نسميها هكذا ()void setX، وإذا كانت دالة تسترجع قيمة (الــ getter) نسميها هكذا ()void getX. وايضاً على سبيل المثال حينما تصنع متغير من النوع enum تسميه enX، ولو من النوع structure تسميه هكذا stX...إلخ

  •  حيث X هو اسم الدالة التي ستسميها باسم معبر بالتأكيد.

الخاتمة

كان هذا المقال الثاني من عدة مقالات بشرح فيها أهم النصائح لكتابة كود نظيف (رابط المقال الأول) من كتاب Clean Code: A Handbook of Agile Software Craftsmanship للعم بوب؛ قدمت لكم فيه 11 نصيحة في غاية الأهمية لكتابة clean code، وكانت نصائح اليوم تركز بشكل كبير على الأسماء ومدى أهميتها، وكيف نجعلها أسماء معبرة من أجل كود نظيف. انتظروا باقي المقالات.

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

كان معكم علي وحيد.

"اللهم إن كان من توفيق فمنك وحدك وإن كان من خطأ أو نسيان فمني ومن الشيطان."

المصادر


Ali Waheed

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

إرسال تعليق

أحدث أقدم

نموذج الاتصال