سؤال

هل هناك أي سبب منطقي، لماذا خصائص أصلية لن تكون جزءا من جافا 7؟

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

المحلول

والقيام خصائص "الحق" في جاوة لن يكون سهلا. العمل ريمي Forax وكانت قيمة خاصة في معرفة ما هذا قد تبدو وكأنها، والكشف عن الكثير من "gotchas" التي سيكون لها ليتم التعامل معها.

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

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

نصائح أخرى

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

لكنني أعتقد أن السبب الحقيقي وراء عدم قيام شركة Sun بدفع العقارات هو نفس عمليات الإغلاق:

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

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

تاريخ الخصائص هنا:

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

هناك سببان آخران لتجنب الخصائص بأي لغة:

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

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

  • وقت غير كافي؟
  • لم يتم تحديدها بشكل صحيح بعد؟
  • هل من الصعب الإضافة إلى Java بسبب تطبيق Java؟
  • هل تعتبر غير مهمة بدرجة كافية، أي تم إعطاء الأولوية لأشياء أخرى؟
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top