ما هي أدوات إعادة البناء التي تستخدمها لبيثون؟

StackOverflow https://stackoverflow.com/questions/28796

  •  09-06-2019
  •  | 
  •  

سؤال

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

البحث والاستبدال البسيط لا يصلني إلا حتى الآن.في حالتي، أريد إعادة تسمية AdminAction إلى AdminActionPlug وAdminActionLogger إلى AdminActionLoggerPlug، وبالتالي فإن عملية البحث والاستبدال الخاصة بالأول ستصل أيضًا إلى الثانية، بشكل خاطئ.

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

هل كانت مفيدة؟

المحلول

في هذه الأثناء، لقد جربت أداتين لهما نوع من التكامل مع vim.

الأول هو حبل, ، مكتبة إعادة بيع ديون بايثون التي تأتي مع البرنامج الإضافي Vim (و emacs).لقد قمت بتجربتها مع بعض التعديلات، وقد نجح ذلك بالتأكيد كما هو متوقع.لقد سمح لي بمعاينة إعادة البناء على أنها فرق، وهو أمر جميل.إنها تعتمد قليلاً على النص، لكن هذا جيد بالنسبة لي، فقط يستغرق وقتًا أطول للتعلم.

والثاني هو رجل إصلاح الدراجات الذي أعتقد أنه يفوز بالنقاط على الاسم.يتم توصيله أيضًا بـ vim و emacs.لم ألعب بها كثيرًا بعد، لكني أتذكر أنني جربتها منذ وقت طويل.

لم ألعب مع كليهما بشكل كافٍ بعد، أو جربت المزيد من أنواع إعادة البناء، لكنني سأقوم ببعض الاختراق معهم.

نصائح أخرى

سأوصي بشدة بيشارم - ليس فقط لإعادة البناء.منذ أن تم نشر إجابة PyCharm الأولى هنا قبل بضع سنوات، تحسن دعم إعادة البناء في PyCharm بشكل ملحوظ.

إعادة بيع ديون بايثون متاحة في PyCharm (تم آخر فحص في 2016/07/27 في PyCharm 2016.2)

  • تغيير التوقيع
  • تحويل إلى حزمة/وحدة بايثون
  • ينسخ
  • استخراج إعادة البناء
  • في النسق
  • عكس منطقية
  • جعل وظيفة المستوى الأعلى
  • نقل إعادة البناء
  • دفع الأعضاء إلى أسفل
  • اسحب الأعضاء لأعلى
  • إعادة تسمية إعادة البناء
  • حذف آمن

إعادة هيكلة XML (لقد راجعت قائمة السياق في ملف XML):

  • إعادة تسمية
  • يتحرك
  • ينسخ
  • استخراج الاستعلام الفرعي كـ CTE
  • في النسق

إعادة بناء جافا سكريبت:

  • استخراج المعلمة في جافا سكريبت
  • تغيير التوقيع في جافا سكريبت
  • استخراج المتغير في جافا سكريبت

سوف يدعم WingIDE 4.0 (WingIDE هو python IDE المفضل لدي) بعض عمليات إعادة البناء، لكنني جربت للتو الإصدار التجريبي الأخير، beta6، و...لا يزال هناك عمل يتعين القيام به.تعمل طريقة السحب بشكل جيد، ولكن إعادة تسمية الرمز لا تعمل.

تحديث:لقد أصلح الإصدار 4.0 جميع أدوات إعادة البناء.إنهم يعملون بشكل رائع الآن.

يمكن أن يدعم IDE الخاص بك إعادة البناء !!التحقق من ذلك، لدى Eric وEclipse وWingIDE أدوات مدمجة لإعادة البناء (بما في ذلك إعادة التسمية).وهذه عمليات إعادة هيكلة آمنة جدًا - إذا حدث خطأ ما، فلن يقوم IDE بفعل المرجع.

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

بيشارم لديك بعض ميزات إعادة البناء.

إعادة هيكلة بايثون

إعادة تسمية تسمح إعادة البناء بإجراء تغييرات على التعليمات البرمجية العالمية بأمان وعلى الفور.يتم إجراء التغييرات المحلية داخل الملف في مكانه.تعمل عمليات إعادة البناء في مشاريع Python وDjango البسيطة.

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

أود أن ألقي نظرة على الرامي (https://pybowler.io).

إنه أكثر ملاءمة للاستخدام مباشرة من سطر الأوامر بدلاً من الحبال ويشجع البرمجة النصية (البرامج النصية لمرة واحدة).

يمكنك استخدام sed للقيام بذلك.الحيلة هي أن نتذكر أن التعبيرات العادية يمكنها التعرف على حدود الكلمات.يعمل هذا على جميع الأنظمة الأساسية بشرط حصولك على الأدوات، والتي هي Cygwin على نظام التشغيل Windows، وقد يتطلب نظام التشغيل Mac OS تثبيت أدوات التطوير، ولست متأكدًا من ذلك، ويحتوي Linux على هذا خارج الصندوق.لذلك يجب أن يقوم كل من grep وxargs وsed بالمهمة، بعد 12 ساعة من قراءة صفحات الدليل والتجربة والخطأ؛)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top