سؤال

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

وإلقاء نظرة تحت Tools/Customize/Fonts and Colors، أستطيع أن أرى أن في بعض الحالات هناك تحبب ما يرام. يمكنك إعطاء ألوان مختلفة لسلاسل، وسلاسل حرفية، على سبيل المثال.

ولكن هنا هو خط نموذجي من C # رمز:

Controls.Add(combo);

والآن Controls, Add, and combo كلها أنواع مختلفة من الأشياء، ولكنها يتم تقديمها جميعا في نفس اللون، لأنها كلها "المعرفات" فقط.

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

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

المحلول

وهناك بعض الأفكار.

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

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

لشرح وجهة الثالثة لي عليك أن تعرف قليلا عن كيفية معالجة اللغات. نبدأ من خلال اتخاذ شفرة المصدر و"lexing" هو داخل "الرموز" - الكلمات. نحن في هذه المرحلة معرفة ما إذا كان كل حرف هو جزء من رقم، سلسلة، الكلمة، المعرف، تعليق، توجيه المعالج، وهلم جرا. Lexing هو <م> سريع بشكل لا يصدق . يمكننا بسهولة إعادة يكس ملف بين المفاتيح.

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

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

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

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

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

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

نصائح أخرى

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

و-Daniel

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