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

صورة


هل هناك طريقة لتحسين مهاراتك 10 مرات؟ هل هناك أي سر سحري - إذا كنت تعرف ذلك فقط - سيفتح لك عالمًا جديدًا تمامًا من المهارة والإنتاجية في تطوير البرمجيات؟



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



نعم! هناك!



ولكن حتى لو قمت بمشاركتها معك - حتى لو قمت بتفصيلها لك - فقد يستغرق الأمر 10 سنوات لتنمو وتقدر بساطتها تمامًا.



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



هذا السر هو الفرق الرئيسي بين متوسط ​​الأداء وأداء 10x. من خلال الاستفادة من هذا السر ، يمكنك أن تكون أوامر من الحجم أكثر فعالية.



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



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



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



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



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



"البساطة تطرح ما هو واضح وتضيف معنى".

- جون مايدا: قوانين البساطة


التجريد ليس شارعًا باتجاه واحد. يتكون من مفهومين إضافيين:



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


خذ بعين الاعتبار الرمز التالي:



const doubleList = list => {
  const newList = [];
  for (var i = 0; i < list.length; i++) {
    newList[i] = list[i] * 2;
  }
  return newList;
};


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



  • يتضمن تفاصيل حول بنية بيانات الحاوية (الصفيف) المستخدمة ، مما يعني أنها ستعمل فقط مع المصفوفات. أنه يحتوي على تبعية شكل الدولة .
  • يتضمن منطق التكرار ، مما يعني أنه إذا كنت بحاجة إلى عمليات أخرى تحتاج أيضًا إلى زيارة كل عنصر في بنية البيانات ، فستحتاج أيضًا إلى تكرار منطق التكرار المتشابه جدًا في هذا الرمز. هذا يسبب التكرار ، والذي قد ينتهك مبدأ DRY (لا تكرر نفسك) .
  • وهي تتضمن مهمة صريحة بدلاً من الوصف التعريفي للعملية المراد تنفيذها. انها الالفاظ .


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



"إذا لمست شيئًا واحدًا بوعي عميق ، فإنك تلمس كل شيء."

- تيهات نهات هان


باستخدام عملية الخريطة ، يمكننا تقليل الرمز إلى سطر واحد ، وإزالة ما هو واضح (الأجزاء التي من المحتمل أن نكررها في نفس الرمز) والتركيز على الأهمية (فقط ما يجب أن يكون مختلفًا لاستخدامنا). مثال:



const doubleList = list => list.map(x => x * 2);


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



كبار المطورين قيمة الشفرة التي لا يحتاج أحد إلى كتابتها.



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



جيريمي أشكيناسجعلت العديد من هذه العمليات شائعة في JavaScript ، ومهدت الطريق للعديد من اختصارات بناء الجملة الرائعة التي نأخذها الآن في JavaScript ، أولاً باستخدامها في CoffeeScript. قام بإنشاء Underscore ، التي ولدت Lodash (لا تزال أداة البرمجة الوظيفية الأكثر شيوعًا في JavaScript) و Backbone ، التي عممت بنية MVC في JavaScript وأرست الأساس لـ Angular و React.



جون رزيجصنع jQuery ، الذي كان شائعًا ومؤثرًا لدرجة أنه شكل أكبر مجموعة من وحدات JavaScript المعاد تغليفها (ملحقات jQuery) حتى ظهرت وحدات Node القياسية ووحدات ES6 بعد بضع سنوات. كانت واجهة برمجة التطبيقات jQuery selector قوية جدًا لدرجة أنها أصبحت الأساس لـ DOM API الحديثة. أستفيد من واجهة برمجة التطبيقات هذه يوميًا تقريبًا عندما أختبر مكونات التفاعل .



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



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



"أعطني رافعة طويلة بما فيه الكفاية ونقطة ارتكاز يمكنني الاعتماد عليها ، وسأحرك العالم كله."

- أرخميدس


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





صورة



تعرف على تفاصيل كيفية الحصول على مهنة رفيعة المستوى من الصفر أو المستوى الأعلى في المهارات والراتب من خلال الحصول على دورات SkillFactory المدفوعة عبر الإنترنت:






قراءة المزيد






All Articles