سؤال

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

يحصد Klingon Warrior لا يعلق كوده!

لذلك قررت لغتي سوف لا يدعم التعليق, ، لأن أي كلينجون الجيد لن يستخدمها أبدا.

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

إزالة القدرة على التعليق من لغة البرمجة تعني يملك لأكتب رمز القراءة والكتابة, ، لا استثناءات.

لذلك حصلتني على أتساءل عما إذا كانت هناك أي لغات لا تدعم التعليقات؟

هل هناك أي حجج جيدة حقا لا تزيل التعليق من لغة؟

تحرير: أي أمثلة جيدة للتعليقات المطلوبة؟


PS> لغتي هوايتي أعلاه هي سخيفة جزئيا على أي حال، لذلك لا تركز الكثير على تطبيقي، بقدر مفهوم التعليقات المطلوبة بشكل عام

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

المحلول

لست متأكدا من أنني أتفق مع "have" في البيان "في البيان" إزالة القدرة على التعليق من لغة البرمجة تعني أن أترك رمز القراءة والكتابة، ولا توجد استثناءات "، لأنه ليس كما لو تم توثيق جميع الكود. تخميني هو أن معظم الناس سوف يكتبون رمز غير قابل للقراءة.

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

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

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

نصائح أخرى

لا تعلق على ما تفعله، ولكن لماذا تفعل ذلك.

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

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

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

الأماكن التي تكون فيها التعليقات مفيدة:

  • ترك رقم التذكرة بجانب الإصلاح حتى يمكن للمبرمجين المستقبل فهم متطلبات العمل
  • شرح اختراق صعبة للغاية
  • تعليق على منطق الأعمال لقطعة من التعليمات البرمجية
  • أوصاف TERSE في مستندات API حتى تتمكن جهة خارجية من استخدام API الخاص بك

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

يحتوي الكود الخاص بك على جماهيرين متميزين:

  • المترجم
  • البشر مثلنا

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

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

أنت لا تفعل ذلك يحتاج تأكيد واحد في التعليمات البرمجية الخاصة بك لأنه، في وضع الإصدار، ذهبوا جميعا. ولكن عندما يكون C ++ لم يكن لديه تأكيدات مدمجة، كتب أحدهم ماكرو تأكيد لاستبداله.

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

HelperFunctionDoesNothing("This is a comment! Blah Blah Blah...");

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

var useless_comment = "Can we destroy our enemies?"
if (phasers on full) return Qapla'

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

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

في حين أن جميع التعليمات البرمجية المصدر حقوق الطبع والنشر بشكل افتراضي. غالبا ما يكون لطيفا ل:

  1. ذكر الشخص الذي يقرأ التعليمات البرمجية المصدرية التي تخضع لحقوق النشر

  2. أخبر الناس ما هي شروط الترخيص الخاصة بهذا ملف التعليمات البرمجية المصدر

  3. أخبرهم ما إذا كانوا ينظرون إلى سر تجاري محمي أم لا

لسوء الحظ، دون تعليقات، من الصعب القيام بذلك.

هل أنا الوحيد الذي يعلق على خطوط الشفرة لعدد من الأغراض؟

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

في الواقع، رغم ذلك، أنا مندهش وخيبة أمل لمعرفة ذلك حتى دعم لغتي البرمجة الباطنية المفضلة لدي تعليقات: brainf ** ك و Whitespace.. وبعد من المفترض أن تكون هذه اللغات يصعب قراءتها، لذلك يبدو أنها لا ينبغي أن تدعم التعليق. (بدلا من لغتي الباطنية المفضلة الأخرى: lolcode., ، والذي من المفترض أن تكون توثيق ذاتي، في خطاب lolcats)

أود أن المعارضة من الإجابات الآخرين في هذه المرحلة: أقول، أن أكون صادقا في رؤيتك لغة برمجة Klingon، ولا تدعم التعليقات!

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

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

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

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

يجب أن أضيف روابط أو هي روابط تعتبر التعليق؟

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

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

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

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

لا - لا توجد لغة برمجة واحدة تتطلب تعليقات.

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

بجانب ذلك، المبرمجين الحقيقيون لا يعلقون رمزهم. وبعد تماما مثل Klingons.

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

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

حظا سعيدا مع القرصنة كلينغون. :-)

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

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

أعتقد أن التعليقات مطلوبة في العديد من الحالات.

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

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

هل يمكننا العيش بدون تعليقات على الكود؟ بالتأكيد، ولكن هذا لن يجعل العيش أسهل.

هي تعليقات ضرورية لغرفة البرمجة؟

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

هل هي مفيدة لغرفة البرمجة لتوفير بناء تعليق؟

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

التعليقات مفيدة لأنها طمأنت الشخص الذي يقرأ الشفرة - ربما "المستقبل لك" - لقد فكرت في رفاهيةها.

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

if (false) {
    print("This is a comment. Chew on that, Klingons!")
}

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

بالطبع بكل تأكيد!!

السبب الرئيسي هو مطوري المبتدئين. لا يعرف الجميع كيفية كتابة رمز القراءة والكتابة. في الواقع هناك ملايين لا يحصلون على nullpointerexception عندما يرون واحدة.

كلنا نبدأ في مرحلة ما.

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

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

:)

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

كتبت مرة واحدة تطبيق VB (لعبة لوح سخيف مستوحاة من الاحتكار) بدون أي تعليقات. لكنني فعلت ذلك فقط لإغراء أستاذي، الذي أخبرنا أن التعليقات الأمريكية كانت من أجل "كل ما وجدنا ذو صلة, ، لذلك يمكننا أن نتذكر ذلك لاحقا ".

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

أي رمز يحتاج إلى تعليقات، أحاول شرح سبب وأعمال كل وظيفة أكتبها في 1 أو 2 سطر.

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

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

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