كيف تجعل الكود الخاص بك أكثر قابلية للقراءة مع التجريد

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

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

أول الأشياء أولاً: ما هو التجريد؟

حسب أسس معلمة البرمجة:

"التجريد هو تحديد مبسط للكيان"

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

التجريد هو أيضًا ظرفية: كل واحد يناسب حاجة ، لذلك يمكنك ربط التجريد الجيد بالاستخدام الخاص لهذا الكيان.

دعنا نلقي نظرة على Binary Search Tree (إذا كنت لا تعرف ما الذي تبحث عنه ، فراجع مقالتي عنها). يمكننا تحديد العقدة ككيان بالخصائص التالية:

A Node has: Node * left Node * right int val

هنا نقول أن العقدة بها مؤشرين للعقد الأخرى وقيمة int. ولكن ما مدى فائدة هذا بالنسبة لشخص ما مقارنةً بوظيفة insert(node, value)ما وسيدخلها بشكل صحيح؟ بهذه الطريقة ، ستحتاج فقط إلى الاتصال به وقد تم ذلك. بسيط.

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

حسنًا ، ولكن ما مدى جودة تجريد البيانات؟

يسمح لنا تجريد البيانات بتحويل بنية بيانات معقدة إلى بنية بسيطة وسهلة الاستخدام. تأثير ذلك هو أنه يمكن تحويل برنامج بمستوى عالٍ من تعقيد التعليمات البرمجية إلى برنامج يبدو قريبًا من اللغة الإنجليزية (دعنا نطلق عليه رمز عالي المستوى )

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

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

دعنا نختار مثالًا ونعمل معه: المتجهات

سنفترض أن المتجهات هي:

  • كائنات ذات قيمتين ، x و y
  • x و y كلاهما عدد غير سالب

بهذه الطريقة تكون المتجهات شيئًا مثل (2 ، 5) ، (0 ، 19) وهكذا.

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

لنبدأ بتحديد صنفنا (لن أقوم بتعريف التحقق من النوع للحفاظ على نظافة الكود ، ولكن يجب عليك القيام بذلك):

لذلك حددنا طرقًا متعددة ولدينا الكثير من الأشياء التي يمكننا القيام بها الآن:

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

دعنا الآن نجعل تطبيقًا مختلفًا لمتجه الصنف (نغير حالته الداخلية) إلى شيء بنفس الطرق ولكن برمز مختلف:

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

دعنا الآن نستخدم مثالاً آخر ، هذه المرة مع فصلين: المدينة والمواطن.

ونحصل على ما يلي:

### OUTPUT ###City population is 1000, random: Citizen is a female 20 years oldCity population is 1000, random: Citizen is a male 74 years old

لكن تخيل الآن أننا نريد تغيير طريقة عمل فئة المواطن في الداخل. إذا لم نستخدم التجريد ، فسيتعين علينا تغيير الكود بالكامل! هذا كثير من العمل!

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

تغليف

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

إذا كانت لديك أي أسئلة أو شيء تريد التحدث عنه أو مناقشته ، فاترك تعليقًا أدناه!

لا تنسى متابعتي على Instagram و Twitter!