سؤال

دعونا نقول كنت قد ورثت C# برنامج يستخدم صف واحد مع 200 أساليب ثابتة لتوفير الوظائف الأساسية (مثل قاعدة بيانات البحث).من العديد من الكوابيس في تلك الفئة ، هناك غزير استخدام منهج المجرية (النوع السيء).

هل ريفاكتور متغير أسماء لإزالة منهج المجرية ، أو يمكنك تركها وحدها ؟

إذا اخترت تغيير جميع المتغيرات لإزالة منهج المجرية, ما يمكن أن يكون الأسلوب ؟

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

المحلول

ومجرد ترك ذلك وحدها. هناك استخدامات أفضل من وقتك.

نصائح أخرى

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

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

وانقر بزر الماوس الأيمن على اسم المتغير، ريفاكتور -> إعادة تسمية

وهناك VS الوظائف الإضافية التي تفعل ذلك أيضا، ولكن أسلوب مضمنة يعمل بشكل جيد بالنسبة لي.

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

ولكن، مهلا، إذا كان لديك حقا <م> hankerin "فر refactorin ' ثم لا مجرد قليلا في وقت واحد. في كل مرة كنت تعمل عليه قضاء عشر دقائق إعادة تسمية المتغيرات. ترتيب تلك الامور قليلا. بعد بضعة أشهر قد تجد انها نظيفة كما صافرة ....

ولا ننسى أن هناك نوعين من تدوين المجرية.

والأصلي تشارلز سيموني HN، عرفت فيما بعد باسم المجرية التطبيقات ورجس لاحق دعا النظام المجرية بعد بعض peckerhead (وهو مصطلح فني) أخطأت تماما <لأ href = "http://msdn.microsoft.com/en-us /library/aa260976.aspx "يختلط =" نوفولو noreferrer "> سيموني في ورقة الأصلي .

ولسوء الحظ، تم نشر نظام HN بواسطة بيتزولد وغيرها ليصبح الإجهاض أكثر المهيمن أن من المسلم به بحق كما هو الحال اليوم.

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

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

إذا كنت قد هبطت في كومة من تبخير الهنغارية النظام؟

وجميع الرهانات!

يا للعجب! (قال حين عقد الأنف) (-:

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

اعتدت على استخدام ذلك دينيا مرة أخرى في VB6 أيام, لكنها توقفت عندما VB.NET خرج لأن هذا هو ما الجديد VB التوجيهية قال.مطورين آخرين لم.لذلك لدينا الكثير من التعليمات البرمجية مع ذلك.عندما أقوم بأعمال الصيانة على رمز إزالة التأشير من وظائف/طرق/sub كنت على اتصال.لن إزالته في كل مرة إلا إذا لديك حقا جيدة وحدة الاختبارات على كل شيء و يمكن تشغيلها لإثبات أن لا شيء مكسور.

كم أنت ذاهب لكسر من خلال ذلك؟ هذا سؤال مهم أن تسأل نفسك. إذا كان هناك الكثير من القطع الأخرى من التعليمات البرمجية التي تستخدم هذه المكتبة، فإنك قد تكون مجرد خلق عمل الناس (ربما) عن طريق الذهاب من خلال ممارسة إعادة تسمية.

وكنت وضعه على قائمة من الاشياء للقيام عند إعادة بيع ديون. على الأقل ثم الجميع يتوقع منك أن تكون كسر مكتبة (مؤقتا).

وقال ان أحصل تماما بالاحباط مع أساليب والمتغيرات سيئة اسمه، حتى أستطيع أن تتصل بها.

وأود أن لا تجعل مشروع للخروج منه. فما استقاموا لكم فاستقيموا استخدام أدوات إعادة الهيكلية في VS (في الواقع، كنت تستخدم في Resharper، ولكن العمل VS لما يرام) وإصلاح كافة المتغيرات في أي طريقة كنت مدعوة إلى تعديل. أو إذا اضطررت إلى إجراء تغييرات واسعة النطاق، فما استقاموا لكم فاستقيموا ريفاكتور أسماء المتغيرات في أي طريقة كنت مدعوة إلى <م> فهم .

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

ولكن، وأنا أتفق مع كريس كونواي إلى وجهة نظر معينة، وأسألك لماذا، نعم، وهو أمر مزعج، ولكن في نفس الوقت، والكثير من الوقت و"إذا كان aint't كسر done't إصلاحه "الأسلوب هو حقا أفضل طريقة للذهاب!

وتغييره فقط عند استخدامه مباشرة. وتأكد لديك testbench على استعداد لتطبيق للتأكد من أنه لا يزال يعمل.

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

وكنت أقول المشكلة الأكبر هي أن لديك فئة واحدة مع 200 (!) طرق!

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

في هذا، Resharper ضرورة مطلقة (هل يمكن استخدام المدمج في الاشياء إعادة بيع ديون، ولكن Resharper طريقة أفضل).

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

وتجميع وتشغيل جناح الاختبار.

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

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

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

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

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

وبدلا من ذلك، هل يمكن التخلي عن المتغيرات الخاصة بك تماما ولها فقط كل وظيفة مقابل 42.

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

واعتقد انه من غير المحتمل أن مثل مجموعة من الاختبارات موجودا، لأن المطور التالية الممارسات TDD أن (أمل) تجنبت بشكل طبيعي بناء كائن الله في المقام الأول - أنه سيكون من الصعب جدا أن يكتب اختبارات شاملة ل.

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

ويمكنك القضاء على المجرية كما تذهب، إذا أردت.

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

وأمثلة (يذهب في vimrc):

"" Hungarian notation conversion helpers
"" get rid of str prefixes and fix caps e.g. strName -> name
map ,bs /\Wstr[A-Z]^Ml3x~
map ,bi /\Wint[A-Z]^Ml3x~
"" little more complex to clean up m_p type class variables
map ,bm /\Wm_p\?[A-Z]^M:.s/\(\W\)m_p\?/\1_/^M/\W_[A-Z]^Mll~
map ,bp /\Wp[A-Z]^Mlx~

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

إذا فريقك على ما يرام مع هذا إعادة بيع ديون، واستثمار وقتك في هذا العمل (والذي قد يكون المنقذ وقت ما في المستقبل، لو كان ذلك يعني رمز هو أكثر قابلية للقراءة / للصيانة)، استخدام Visual Studio (أو أيا كان IDE كنت تستخدم) لمساعدتك على ريفاكتور رمز.

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

وأنا أحب التدوين المجرية. لا أفهم لماذا كنت تريد التخلص منه.

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