سؤال

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

ما هي العوامل المعنية أيضًا:

  • هل تحد مواصفات اللغة هذا؟
  • ماذا يحد المترجم؟
    • هل الأمر مختلف على آلات 32 بت مقابل 64 بت؟
هل كانت مفيدة؟

المحلول

ل C# لا أعتقد أن هناك ملف محدد الحد الصعب. (القسم 2.4.2 من المواصفات C# 5 لا يعطي حد ، على سبيل المثال.) يبدو أن Roslyn v2.2.0.61624 يحد من 1024 حرفًا ؛ هذا يتجاوز حدود قابلية القراءة وحتى اسم معقول تم إنشاؤه.

لجافا ، القسم 3.8 من المواصفات تنص على:

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

نصائح أخرى

يبدو أن PHP يقتصر فقط على حد ذاكرة البرنامج النصي.

مع 128 ميغابايت تمكنت من إنشاء فصل (وطريقة) مع 4 ملايين حرف.

<?php
ini_set('memory_limit', '128M');
$i = 1024 * 1024;

while ($i < 10000000)
{
    $className = str_repeat('i', $i);
    eval("class $className { public function $className() { echo '$i<br>'; } }");
    new $className();
    $i *= 2;
}

?>

لقد أجريت للتو اختبارًا في C# Visual Studio 2010 (X64): صنعت معرفًا:

int a123456789a123...;

وتكرر. في 512 حرفًا ، يعطيني VS الخطأ "معرف طويل جدًا". 511 على ما يرام. (تم فحص عدد الأحرف في الكلمة.)

مثال آخر:

int whyintheworldwouldyoueverhaveanidenfifierthislongitsreallyjustquiteridiculousimeancmonyoucouldatleasthavethecommoncourtesyofmakingitcamelcasesoitsnotsohardtoreadcmonjuststopnowyourereallyreachingtomakethisaslongaspossiblearentyou123412341234alrightwellthatsenoughnowisntitwelliguessnotbecauseimstillgoingthisisofficallytheworstidentifiereverಠ_ಠokaynowthatithasunicodeitsofficialbutseriouslythisthingissolongthatihadtogetupinthemiddleofittotakeabreakbeforesittingdowntofinishtoppingitofftothemaxcharlimitof___511;

تطبيق Microsoft C# هو 511 ، تطبيق VB.NET هو 1023.

ستقوم Visual Studio بتلوين أول 511 (1023 لـ VB) أحرف المعرف والحفاظ على الباقي باللون الأسود.

في C# يبلغ طول 511 حرفًا.

أسماء رموز LISP المشتركة هي سلاسل. الأوتار لها حد طول array-dimension-limit

قيمة ال array-dimension-limit هو عدد صحيح إيجابي هو الحصري العلوي المقيد على كل بُعد فردي من الصفيف. يعتمد هذا الحد على التنفيذ ولكنه لن يكون أصغر من 1024. (يتم تشجيع المنفذين على جعل هذا الحد كبيرًا قدر الإمكان دون التضحية بالأداء.)

في الممارسة العملية ، يمكن أن يكون هذا كبيرًا جدًا

Welcome to Clozure Common Lisp Version 1.3-dev-r11583M-trunk  (DarwinX8664)!
? array-dimension-limit
72057594037927936
? 

Welcome to Clozure Common Lisp Version 1.3-dev-r11583M-trunk  (DarwinX8632)!
? array-dimension-limit
16777216
? 

تتجاهل هذه الإجابة اسم حزمة اسم الطريقة ؛ هذا يمكن أن يضاعف لينغ.

قيد التقدم (OpenEdge) الحد هو 32 Char.

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

في جافا ، أعتقد أنه لا يتم إعطاء حد الطول. شاهد هذا من برنامج Sun Java عبر الإنترنت:

الأسماء المتغيرة حساسة للحالة. يمكن أن يكون اسم المتغير هو أي معرف قانوني-تسلسل غير محدود من أحرف وأرقام Unicode ، بدءًا من خطاب ...

مثل الآخرين أعلاه ، أعتقد أن الطول يعتمد على الذاكرة المتاحة.

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