كيف تكتب كود نظيف في لغة جافا
- لا تكرر الكود أكثر من مرة
- أكتب كود قصير و معبّر
- إختر أسماء مفهومة للأشياء التي تقوم بتعريفها
- وضع تعليقات عند الحاجة
- إستخدم الدوال الخاصة باللغة
- النظافة هي قرار صعب بتحديد ما يجب رميه في القمامة
- صمم برنامجك بشكل واضح و مفهوم
- الكود الذي لا يتم تنظيفه سيتسخ في النهاية
تُنفذ المشاريع البرمجية في العادة ضمن مجموعات من المبرمجين لإنجازها في أقل (أقصر) وقت ممكن، و هذا يضع على عاتقنا مسؤولية كتابة كود لا تفهمه الآلة فحسب كما إعتدنا على كتابته بل يفهمه البشر أيضاً حتى يستطيع باقي أعضاء الفريق قراءة و تعديل الكود الخاص بك في المستقبل، و في هذا المقال سنستعرض بعض النصائح لكتابة كود نظيف يسهل فهمه في لغة جافا ينصح بإتباعها عند كتابة أي كود برمجي و ليس فقط عند العمل داخل فريق, فكما تعرف قد تكون في المستقبل أنت من لا يستطيع قراءة و فهم الكود الذي كتبته منذ بضعة سنين أو حتى أشهر.
لا تكرر الكود أكثر من مرة
إن القيام بنسخ كود معين ولصقه في أرجاء البرنامج يجعل قراءة الكود أصعب بكثير، و قد تحتاج في وقت ما لتغيير الكود و عندها ستضطر للبحث عنه في جميع البرنامج و تغييره و هو ما يضيّع وقتك و جهدك، و صدقني ستحدث العديد من الكوارث بسبب الأخطاء المخفية و التي لن تلاحظها في طريقة عمل الكود المكرر.
جرّب إنشاء دالة (Method) لتقوم بهذا العمل المكرر و قم بإستدعائها عند الحاجة فوضع الكود في دالة يحميه من الأخطاء و يعزله كوحدة مستقلة عن باقي الأسطر البرمجية.
أكتب كود قصير و معبّر
يمكن حل المشاكل البرمجية بمئات الطرق، و لكن أفضل الطرق هو أقصرها و أسرعها وقت التنفيذ، لذلك عندما تقوم بحل مشكلة برمجية معينة فكر في كيفية حلها بأقصر عدد من الخطوات و أقل تأثير على الجهاز طبعاً، فالجميع يستطيع حل المشاكل و لكن الذكي هو من يحلها بأسهل و أسرع طريقة ممكنة حتى لو إستغرق وقتاً أطول في التفكير، و سيساعدك الإطلاع على أفكار الآخرين في النظر من زوايا مختلفة للمشكلة حتى تستطيع تطوير فكرتك الخاصة، و تذكر دائماً أن تترك لوحة المفاتيح فور مواجهتك لمشكلة، و لا تضغط على أي حرف قبل أن تفكر في المشكلة من جميع الجوانب و في طريقة حلها.
عند إختيار طريقة معينة لحل مشكلة برمجية عليك التفكير في كون طريقة الحل معبرة أم لا، ففي بعض الأحيان نقوم بإختيار طريقة واضحة طويلة قليلاً لحل مشكلة برمجية بدلاً من أخرى معقدة و قصيرة، فمن المهم أن يستطيع قارئ الكود فهم كيف يعمل الكود أيضاً، و حاول حل المشكلة خطوة خطوة حتى يفهم القارئ طريقة الحل و لا تباشر حل آخر خطوة في أول سطر مثلاً، و تذكر دائما مقولة “خير الكلام ما قل و دل” فالكود يجب أن يجمع الصفتين أيضاً فواحدة لا تكفي.
إختر أسماء مفهومة للأشياء التي تقوم بتعريفها
في أي لغة برمجة تستخدمها ستجد أنك حتماً تقوم بتعريف الكثير من الأمور مثل المتغيرات, الكلاسات و الدوال و التي لا بد من إعطائها أسماء خاصة بها و هذه الأسماء تسمى معرّفات (Identifier)، و صحيح أنه يمكنك تسمية المتغيرات بإستخدام المزيج الذي تريده من الحروف و الأرقام إلا أن هناك قواعد محددة في تسمية كل شيء يفضّل أو حتى يجب عليك إتباعها دائماً و إلا فالمعرّفات الخاصة بك ستكون أشبه بالطلاسم منها كأسماء، و قد تتسبب طرق التسمية التي لا تتبع هذه القواعد في سوء فهم من يقرأ الكود الخاص بك، فمثلاً إذا قمت تسمية الكلاس getUsername
كما نفعل في العادة مع الدوال, فهنا سيظن من يقرأ الكود أن هذا إسم دالة و ليس إسم كلاس و هكذا.
في لغة جافا قواعد التسمية هي كالتالي:
- لا تستخدم الرمز $ في تسمية أي معرّف مطلقاً.
- لا تستخدم الأرقام إلا في حالات الضرورة القصوى عندما تعطي معنى مهم للإسم، فمثلاً لا تقم بتعريف متغير
name
وname1
فقط لأنك تريد أن تستخدم نفس الإسمname
لكن لمتغير آخر. - أكتب المعرّف ليعبّر عن معنى وهدف المُعرّف، و لا تقم بتسميته بأسماء عامة مثل
data
أوSomeFunctions
أبداً و ركز بهذه النقطة جيداً. - المتغيرات تعرّف بإسم و ليس بفعل، فمثلاً إستخدم
name
بدلاً منgetName
كإسم لمتغير، و يجب أن يبدأ إسم المتغير بحرف صغير، و في حال كان الإسم يتألف من أكثر من كلمة نفصل بين الكلمات بكتابة أول حرف من الكلمة التالية بشكله الكبير مثلemployesSalary
و لا يجب أن تستخدم الرمز_
مطلقاً للفصل بين الكلمات كما نفعل في لغة بايثون. - المتغيرات من النوع
final
يكتب إسمها كله على شكل أحرف كبيرة مفصول بينها بالرمز_
مثلROOT_PATH
. - الدوال تعرّف بفعل و ليس بإسم، و يجب أن يبدأ أول حرف من إسمها بحرف صغير، و يفصل بين الكلمات بكتابة أول حرف من الكلمة التالية كبيراً مثل
getName
. - الكلاسات (Classes) و الإنترفيسات (Interfaces) و التعدادات (Enumerations) توضع كأسماء (و ليس أفعال) كاملة بدون إختصارات يبدأ إسمها بحرف كبير، و يفصل بين الكلمات بحروف كبيرة أيضاً مثل
AdminAccount
. - لا تكتب أي إسم على شكل إختصارات سواء لمتغير أو دالة أو صف مثل
DB
، و اكتب بدلاً منها الإسم كاملاًDatabase
- تسمى قيم التعدادات بنفس طريقة تسمية المتغيرات من النوع
final
فهي أيضاً قيم ثابتة. - الحزم (Packages) تكتب أسماؤها بأحرف صغيرة، و لا تكتب بصيغة الجمع مثل
control
و ليسcontrols
.
وضع تعليقات عند الحاجة
تساعدنا التعليقات في شرح الكود للقارئ، و هي مثل الملح فلا تقلل و لا تكثر منها، و تذكر دائماً بأن تتأكد في حال كون الكود غير واضح من كتابة تعليقات تشرح ذلك الكود، و إن أردت شرح طريقة عمل كلاس أو دالة أو فائدة خاصيّة (Property) يمكنك إستخدام javadoc لكتابة ذلك، و يمتلك javadoc ميزة إمكانية عرضه للمبرمج في بيئات التطوير مثل Netbeans حيث تجد أنك حين تكتب إسم الدالة يظهر لك شرح لها, و هذا ما لا يتم في حالة كتابة ملاحظاتك على شكل تعليق.
إستخدم الدوال الخاصة باللغة
كتابة دوال توفرها اللغة بالأساس و إستخدامها يشتت قارئ الكود و يضيع جهدك و وقتك وقد يتسبب بالمشاكل أحياناً، لذلك عندما تريد القيام بعملية معينة تأكد من كون لغة البرمجة توّفر دوالاً جاهزة لهذه العملية أم لا، و عندما يرى قارئ الكود هذه الدوال سيعرف وظيفتها مباشرة بدلاً من إكتشاف ماذا تفعل هي الأخرى أيضاً.
النظافة هي قرار صعب بتحديد ما يجب رميه في القمامة
عليك الإقرار بهذا التعريف القاسي لنظافة الكود، فوضع الكود الذي لا تحتاجه في تعليقات للإحتفاظ به و تعريف متغيرات و دوال لا تحتاجها هم من يشتتون القارئ.
صمم برنامجك بشكل واضح و مفهوم
بإمكان كل منا تصميم برنامج ليقوم بنفس المهمة بطرق مختلفة.
بناء الكلاسات بحيث تتبع قواعد و طرق واضحة في تخزين البيانات و التعامل معها هو أمر ضروري لتسهيل فهم الكود و التطوير عليه مستقبلاً، و يجب أن يبدأ تصميم أي برنامج بكتابة الكلاسات و تحديد مدخلاتها و مخرجاتها و كيف ترتبط مع بعضها، و يتم ذلك عادة بإستخدام لغة النمذجة الموحّدة (UML).
عند تصميم الكلاسات لا بد من الإطلاع على أنماط التصميم (Design Patterns) المختلفة، و تحدد هذه الأنماط طرق معروفة للجميع لطريقة عمل الكلاس، و عندما يعرف قارئ الكود أنك تستخدم نمط تصميم معين سيعرف كيف يستخدم الكلاس و كيف يعمل أيضاً.
الكود الذي لا يتم تنظيفه سيتسخ في النهاية
تذكر دائماً أن تعديلك و تحديثك للكود البرمجي سيعقّد البرنامج لذلك دائماً ألق نظرة على الكود و حاول تنظيفه و تبسيطه قدر الإمكان، و لا بد من الإشارة هنا لكون بيئات العمل (IDEs) مثل Netbeans توفر أدوات بسيطة لتسهل عليك هذه العملية، فمثلاً يمكنك تغيير إسم متغير أو دالة و سيقوم بتعديله لك في كل الملفات.
نختم هنا بكون الكود هو لوحة فنية يجب إيصال فكرتها للآخرين و ليس فقط للآلة، و تذكر بأن الجهد الذي تبذله الآن في التخطيط و العمل يقلل من تضييع وقتك و مجهودك في المستقبل.