كود نظيف في TypeScript: المبادئ والأمثلة للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

كود نظيف في TypeScript: المبادئ والأمثلة للمبتدئين

\n

الكود النظيف (Clean Code) ليس مجرد مصطلح عصري، بل هو فلسفة تطوير تساعد في كتابة برامج يفهمها المطورون الآخرون (وحتى أنت بعد ستة أشهر). بالنسبة للمبرمجين المبتدئين في TypeScript، فإن إتقان مبادئ الكود النظيف هو خطوة أساسية نحو النمو المهني. في هذه المقالة، سنشرح القواعد الأساسية، ونقدم أمثلة توضيحية، ونوضح كيف تجعل كود TypeScript الخاص بك أنيقًا وقابلًا للصيانة.

\n\n

لماذا الكود النظيف مهم؟

\n

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

\n\n
// سيء: غير قابل للقراءة\nfunction d(a:any,b:any){if(a>b){return a}else{return b}}\n\n// جيد: نظيف وواضح\nfunction findMaxValue(firstNumber: number, secondNumber: number): number {\n    if (firstNumber > secondNumber) {\n        return firstNumber;\n    }\n    return secondNumber;\n}
\n\n

المبادئ الأساسية للكود النظيف في TypeScript

\n\n

1. أسماء ذات معنى للمتغيرات والدوال

\n

يجب أن يجيب الاسم على سؤالي "ماذا؟" و"لماذا؟". تجنب الاختصارات المكونة من حرف واحد (باستثناء مؤشرات الحلقات) والأسماء المجردة. استخدم camelCase للمتغيرات و PascalCase للفئات.

\n\n
// سيء\nconst d = new Date();\nconst arr = [1, 2, 3];\nfunction p(x: number) { return x * 2; }\n\n// جيد\nconst currentDate = new Date();\nconst numbersList: number[] = [1, 2, 3];\nfunction doubleValue(value: number): number {\n    return value * 2;\n}
\n\n

2. يجب أن تقوم الدوال بشيء واحد فقط

\n

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

\n\n
// سيء: الدالة تفعل كل شيء دفعة واحدة\nfunction processUserData(userData: string): void {\n    const parsed = JSON.parse(userData);\n    const isValid = parsed.name && parsed.email;\n    if (isValid) {\n        console.log(`User ${parsed.name} registered`);\n        saveToDatabase(parsed);\n    }\n}\n\n// جيد: كل دالة مسؤولة عن شيء واحد\nfunction parseUserData(rawData: string): User {\n    return JSON.parse(rawData);\n}\n\nfunction validateUserData(user: User): boolean {\n    return !!user.name && !!user.email;\n}\n\nfunction registerUser(userData: string): void {\n    const user = parseUserData(userData);\n    if (validateUserData(user)) {\n        console.log(`User ${user.name} registered`);\n        saveToDatabase(user);\n    }\n}
\n\n

3. تجنب الأرقام والنصوص السحرية

\n

الأرقام السحرية هي قيم حرفية لا يُفهم معناها بدون سياق. قم بإخراجها إلى ثوابت بأسماء واضحة.

\n\n
// سيء\nif (user.age > 18) {\n    // ...\n}\nconst discount = price * 0.1;\n\n// جيد\nconst ADULT_AGE = 18;\nconst STANDARD_DISCOUNT_RATE = 0.1;\n\nif (user.age > ADULT_AGE) {\n    // ...\n}\nconst discount = price * STANDARD_DISCOUNT_RATE;
\n\n

4. استخدم الأنواع والواجهات بشكل صحيح

\n

TypeScript يوفر أدوات قوية لوصف البيانات. لا تفرط في استخدام any، وفضل الأنواع المحددة. أنشئ واجهات للكائنات المعقدة.

\n\n
// سيء\nfunction createUser(name: any, age: any) {\n    return { name, age, createdAt: new Date() };\n}\n\n// جيد\ninterface User {\n    name: string;\n    age: number;\n    createdAt: Date;\n}\n\nfunction createUser(name: string, age: number): User {\n    return {\n        name,\n        age,\n        createdAt: new Date()\n    };\n}

المدونات

توصيات الكتب