سؤال

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

ليس لدي الوقت لتغيير جميع أسماء المتغيرات الموجودة بالفعل في الكود.

أنا أميل إلى سهولة القراءة فقط لمواصلة اصطلاح التسمية الخاص بهم.

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

المحلول

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

نصائح أخرى

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

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

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

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

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

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

وهذا يعني أنه يجب عليك إما:

  1. قم بتحديث الكود الذي تعمل عليه ليتوافق مع الإرشادات أثناء العمل عليه.

  2. استخدم الاتفاقيات الموجودة في الكود لمساعدة جهود الصيانة المستقبلية.

أوصي بـ 2.، لكن التدوين المجري يجعل عيني تنزف :p.

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

وبطبيعة الحال، إذا كان رمز الأصلي تمتص حقا، كل الرهانات.

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

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

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

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

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

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

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

نعم.لقد كتبت هذا بالفعل في مستند المعايير.لقد أنشأت في شركتي الحالية:

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

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

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

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

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

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

عند ممارستها في روما كما يفعل الرومان.

و(باستثناء أسماء المتغيرات مؤشر، على سبيل المثال "iArrayIndex ++". وقف التغاضي عن ذلك حماقة.)

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

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

ولكن في بعض الأحيان نحصل على الوقت لوضع الامور في نصابها الصحيح حتى في النهاية، سيكون جميلة ونظيفة.

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

في كلتا الحالتين أحاول بمناسبة التغييرات التي اجريتها عن طريق صياغة لهم تعليقات. وأنا أعلم مع أنظمة CVS اليوم هذا غالبا ما لا تفعل، ولكن أنا لا تزال تفضل أن تفعل ذلك.

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

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

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

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

scroll top