الغرض من هذا المشروع هو تحليل بيانات الأسهم لشركات الطاقة الخضراء في عامي 2017 و2018. ونقوم بحساب مجموع إجمالي الأحجام اليومية لكل عام والعائد السنوي لكل رمز من رموز المؤشر.
بشكل عام، كان أداء مخزونات الطاقة الخضراء أفضل بكثير في عام 2017 مقارنة بعام 2018 باستثناء TerraForm Power (رمز السهم TERP) كما ترون من البيانات أدناه.
قامت النصوص المُعاد تصنيعها بتشغيل الإجراءات الفرعية خلال 0.55 ثانية و0.57 ثانية لعامي 2017 و2018 على التوالي. يعد هذا تحسنًا هامشيًا عن 0.64 ثانية و0.67 ثانية للنص الأصلي، ويتم توفير لقطات الشاشة أدناه.
الفرق الرئيسي بين الطريقتين المستخدمتين لإنتاج نفس البيانات هو طريقة تخزين البيانات. في الروتين الفرعي الأصلي، يتم تحديث الخلايا الموجودة في ورقة العمل مع كل تكرار لحلقة for، على غرار التعليمة البرمجية أدناه.
For i in tickers
...
Worksheets("AllStocksAnalysis").Activate
Cells(4 + i, 1).Value = ticker
Cells(4 + i, 2).Value = totalVolume
Cells(4 + i, 3).Value = endingPrice / startingPrice - 1
...
End i
يقوم البرنامج النصي للطريقة المعاد تشكيلها بتخزين بيانات إخراج الحلقة في ثلاث صفائف بيانات، والتي يتم استخدامها بعد ذلك لتحديث ورقة العمل بالبيانات بعد تشغيل حلقات الحصول على البيانات، على غرار التعليمة البرمجية أدناه.
Dim tickerVolumes(12) As Long
Dim tickerStartingPrices(12) As Single
Dim tickerEndingPrices(12) As Single
...
'For loops populating arrays
...
For i = 0 To 11
Worksheets("All Stocks Analysis").Activate
Cells(4 + i, 1).Value = tickers(i)
Cells(4 + i, 2).Value = tickerVolumes(i)
Cells(4 + i, 3).Value = tickerEndingPrices(i) / tickerStartingPrices(i) - 1
End i
قد يبدو هذا التلاعب تافهًا، لكنه قطع ما يقرب من عُشر الثانية من وقت التشغيل لكل روتين فرعي.
قد يكون لرمز إعادة البناء مزايا أو عيوب اعتمادًا على الموقف. على أي حال، إذا لم يتم التعليق على الكود الأصلي بشكل كافٍ، أو إذا كان الغرض من الكود شيئًا لا يعرفه الشخص بشكل وثيق، فقد يكون من الصعب جدًا إعادة البناء لأنه قد لا يكون لدى الشخص معرفة كافية بطرق الترميز أو الغرض من الكود.
إذا لم يتم التعليق على الكود بشكل كافٍ، فقد يكون من الصعب جدًا على الشخص معرفة الغرض من كل عبارة ووظيفة. وهذا من شأنه أن يجعل إعادة بناء الكود أمرًا صعبًا للغاية.
إذا كان الغرض من الكود ليس على دراية به، فمن الصعب إعادة بناء الكود دون معرفة الهدف النهائي. لنأخذ على سبيل المثال عمليات المحاكاة الكهروديناميكية للجسيمات النانوية المعدنية شبه الموصلة باستخدام نظرية Mie المتعددة الجسيمات المعممة. انظر هذه القضية؟ بغض النظر عن مدى جودة الشخص في إعادة تجهيز التعليمات البرمجية، فإن هذا الموضوع يتطلب معرفة متقدمة بكل من الديناميكا الكهربائية والمعادلات التفاضلية الجزئية المتقدمة.
علاوة على ذلك، قد ينتهي الأمر بإعادة هيكلة التعليمات البرمجية إلى الكثير من العمل مقابل القليل من المردود. خذ تحليل الأسهم لدينا مع VBA كمثال. إذا ظلت مجموعات البيانات التي يعمل بها المرء على نفس مستوى الحجم الذي عالجناه هنا، فإن إعادة تجهيز الكود بحيث يمكن تشغيله بشكل أسرع بمقدار 0.1 ثانية قد لا يكون شيئًا يثير اهتمام المرء. ومع ذلك، إذا أردنا تحليل قطاعات أكبر من المخزون أداء السوق أو صناديق التحوط، قد تكون إعادة التجهيز هذه ذات قيمة كبيرة عندما يبدأ تنفيذ التعليمات البرمجية في ثلاثين دقيقة أو أكثر.
كود إعادة البناء له العديد من المزايا أيضًا. بشكل عام، غالبًا ما تجعل تعليمات إعادة البناء البرمجية التعليمات البرمجية أكثر أناقة وكفاءة وأحيانًا أسهل للفهم.
إذا كان الشخص قادرًا على التعامل مع التعليمات البرمجية بحيث يتم تحقيق نفس الهدف باستخدام عدد أقل من الخطوط ووظائف أكثر قوة، فسيكون من الأسهل عمومًا فهم التعليمات البرمجية ومن المرجح أن يتم تنفيذها بشكل أسرع أيضًا.
كما أن كود إعادة البناء يمنح المرء فهمًا أعمق لما كان من المفترض أن يفعله الكود في الأصل وكيف تم تحقيق الهدف النهائي. عند إعادة بناء التعليمات البرمجية، يتعين على المرء إلقاء نظرة ثانية على البرنامج النصي وتحديد ما يفعله كل عبارة وما إذا كان يمكن جعل التعليمات البرمجية أكثر كفاءة أو كيف. من المحتمل أن تعني هذه الزيادة في المعرفة بالكود أن تعليق الشخص على الكود المُعاد هيكلته سيكون أكثر فائدة ووصفًا في المرة الثانية.
الميزة الأكثر وضوحًا لبرنامج VBA النصي المُعاد هيكلته هي وقت التشغيل. كما ذكرنا سابقًا، يعمل النص المُعاد تشكيله بشكل أسرع بحوالي عُشر ثانية من النص الأصلي.
يحتوي البرنامج النصي المُعاد هيكلته أيضًا على تعليقات أفضل بكثير حتى نتمكن من الرجوع إلى الكود لاحقًا وفهم البرنامج النصي المُعاد هيكلته بشكل أفضل بكثير مما قد نفهمه من البرنامج النصي الأصلي.
علاوة على ذلك، يحتوي البرنامج النصي المُعاد هيكلته على ماكرو ذي روتين فرعي واحد يقوم بكل شيء، في حين أنجز البرنامج النصي الأصلي نفس المهام باستخدام إجراءات فرعية متعددة.
وأخيرًا، النص المعاد تشكيله هو النص الذي يمكن تعديله بسهولة أكبر لأداء مهام مماثلة لتحليلات أخرى. يتم تخزين البيانات في صفائف في وحدات الماكرو نفسها بدلاً من ملء الخلايا في أوراق العمل أثناء تشغيل الحلقات. إذا أردنا إعادة تجهيز النص الأصلي لغرض آخر، فسيتعين علينا تقريبًا إعادة كتابة الحلقات بالكامل. إذا أردنا إعادة تجهيز البرنامج النصي المُعاد هيكلته لغرض آخر، فسنحتاج فقط إلى تحرير المصفوفات واستخدام وظيفة البحث والاستبدال لتحديث أسماء المصفوفات في الحلقات.