على سبيل المثال ، لدينا لعبة كمبيوتر مع شخصيات متنوعة. سيتم تخزين جنس الشخصية في مجال الجنس. يمكنك جعل هذا الحقل عددًا صحيحًا أو سلسلة ، لكن مبرمجًا جيدًا يسعى إلى جعل حالة الكائنات غير الصحيحة غير واضحة ، وبالتالي ، على الأرجح ، سيبدأ التعداد للأرضية. الآن لجعل شخصية مع الجنس الخطأ هو ببساطة مستحيل!
وما زال في لعبة لديها قاعدة بيانات مخازن جميع اللاعبين، وهناك حاجة أيضا إلى تسجيل ما هم الجنس. سيكون من اللطيف جعل من المستحيل إضافة شخصية ذات جنس غير صحيح إلى قاعدة البيانات ، لأنه لن يعمل معها فقط الكود ، حيث لا يتم توفير أي شيء عدا التعداد للجنس ، ولكن أيضًا الأشخاص الأحياء. والناس الأحياء ، كما تعلمون ، يسعون للدخول في قاعدة البيانات التي ليس من الضروري إدخالها هناك.
لحسن الحظ ، خاصة في مثل هذه الحالات ، في العديد من نظم إدارة قواعد البيانات ، يمكن أيضًا إنشاء أعمدة من نوع التعداد ، مما يحد من نطاق القيم التي يمكن أن تحتوي عليها البيانات الموجودة في هذا العمود. ما الذي سيستفيد من مطور متمرس لا يريد أن يكون مشروعه شيئًا ليس لفنغ شوي.
بالنسبة للعميل ، فإن المبرمج ليس كذلك أحمق ويعرف أيضًا أن الحالات غير الصحيحة يجب أن تكون غير مفهومة ، ولهذا يجب أن يكون جنس الشخصية محصوراً.
مثالية!
ومع ذلك ، إذا نظرت عن كثب ، يمكنك العثور على عيب واحد صغير ، الأمر الذي يؤدي في النهاية إلى حدوث مشاكل. لا يُسمى الحقل الذي تم تخزين الأرضية به الجنس ، بل الجنس ، مما يعني أنه تم بالفعل اختيار مصمم ألعاب له. عاجلاً أم آجلاً ، سوف يكتشف أن هناك أكثر من جنسين ، بخلاف الجنسين ، وسيريد إضافة جنس GENERIC_TEEN. ثم الجميع سوف تحصل على غبي.
الحاجة العميل إلى تحديث مستمر
فإن الضربة الأولى تندرج تحت الرجال الذين كتب رمز العميل، لأن الخيار قيم غير صحيحة بين الجنسين سيأتي مع تشيهواهوا على كل خادم. وعندما تأتي شخصية من النوع الاجتماعي من الخادم حول وجود العميل الذي لا يعرفه ، فإن اللعبة ، كما أراد المبرمج على العميل ، لن تبدأ. الآن، عندما تحتاج الجنسين جديدة لإصدار نسخ جديدة من العميل وتشغيل الترقية القسري، ونحن جميعا نحب كثيرا.
إنه جيد على خادم التعداد ، لأنه إذا تم العثور على قيمة غير معروفة هناك ، فمن الواضح أن هذا خطأ يجب العثور عليه وإصلاحه ، ولكن على العميل ، فإن ظهور قيمة غير معروفة هو موقف منتظم يحدث بانتظام في الإصدارات القديمة من العميل ، وبالتالي هناك التعداد - شر يجب القضاء عليها وتدميرها في أقرب وقت ممكن.
لن تتمكن الشفرة الجديدة من العمل مع قاعدة البيانات القديمة
بالإضافة إلى ذلك ، وفقًا لتوصيات أفضل مربي الكلاب ، يجب أن يكون الرمز الجديد قادرًا على العمل مع نظام البيانات القديم ، وهنا اتضح أن النظام بأكمله يمكن أن ينهار فقط بسبب إضافة نوع جديد من الجنس إلى الكود.
لذلك ، تعدادنا يزعجنا في قاعدة البيانات ، وفي هذه الحالة نحتاج إلى التخزين في سلاسل الحقول ، أو الرموز ، أو أي شيء ، والتي ، إذا لزم الأمر ، يمكنك كتابة قيمة غير مقدمة مسبقًا.
وشخص سوف يقول، حسنا، حسنا، على الضرر التعداد العميل، وفي قاعدة البيانات هو أكثر عائق من مساعدة، ولكن في رمز الملقم، والتعداد هو من فائدة كبيرة. وقال انه لن تقدم لإزالة من رمز التعداد على الخادم؟ سوف يكون!
سوف القانون القديم لا يعمل مع قاعدة جديدة
اليوم ، يوصى مبرمج ليس فقط لكتابة التعليمات البرمجية بحيث يعمل بشكل طبيعي مع قاعدة البيانات القديمة ، ولكن أيضا لتطوير نظام البيانات بحيث يمكن أن تعمل الشفرة التي عفا عليها الزمن قليلا أيضا بشكل طبيعي معها.
وإذا على الخادم لاستخدام الجنس التعداد، ثم كل شيء سوف ينهار مرة أخرى، إلا بعد أن أصبح واضحا أن القانون الجديد الذي لم يتم حتى اللازمة لكل شيء على الفور باستعادة إلى الإصدار السابق وجنس جديد في قاعدة البيانات قد انخفضت بالفعل.
وهكذا فإن التعداد من رمز الملقم الخطوات جندي الأبعاد في مكان ما في اتجاه أقرب الغابات، لتعود أبدا، لأن كل شيء يمكن أن تدمير النظام في الوقت الخطأ - الشر، والشر ليس له مكان في التعليمات البرمجية الدافئ.
لذلك ربما تدق على التعداد ودائما استخدام الأوتار؟
باختصار، كما قال ويني ذا بوه - هو أي ENAM خطأ، وأنها تتسبب في مبرمج لكتابة رقم الخطأ! في التعداد ، تحتاج إلى وضع أشياء أساسية لا تتزعزع حقًا لم تتغير على مر السنين ، وليس بين الجنسين الذين يضيفون ويختفون كل إصدار! لكل مهمة أداة خاصة بها ، وليس التعداد هو الأداة التي تحتاج إلى استخدامها لتخزين القيم ، التي يتوسع نطاقها المحتمل باستمرار.
إذا كان المتغير يمكنه أن يأخذ فقط بعض القيم المعروفة سابقًا ، وكل شيء غير مدرج في هذه القيم يجب أن يؤدي إلى حدوث خطأ ، فإن استخدام التعداد يعد فكرة جيدة ، ولكن إذا لم يكن كذلك ، إذا كانت القيم غير المتوقعة تدخل في المتغير بانتظام ، فاستخدم التعداد تعادل لاطلاق النار على نفسك في القدم، وأنه من الأفضل ألا تفعل ذلك، إلا إذا كنت مازوشي.
هذه الحالة بالذات هو مثير للاهتمام لأن لم تكن هناك علامات إضافة إلى القيم الجديدة التعداد، ناهيك عن حقيقة أن القيم الجديدة سوف تظهر بانتظام. كيف عرفنا أنه سيكون هناك أكثر من جنسين؟
لذلك ، وفقًا لمبدأ KISS ، يعد التعداد في المرحلة الأولى اختيارًا جيدًا وصحيحًا. سيقوم مبرمج متمرس بإعداد التعداد وإصلاحه عندما تظهر قيمة إضافية ، يجب تشغيل الأحداث الضرورية فورًا لتختفي التعداد من التعليمات البرمجية.
للأسف، أثبتت التجربة أنه في الواقع فإن إضافة جنس جديد يتعامل مع أي شخص آخر، وقال انه، من دون التفكير مرتين، يضيف قيمة التعداد الجديدة، وبقية في هذا الشأن. لذا إذا كان هناك أي شك ، فمن الأفضل اتباع قاعدة بسيطة: يتم تخزينها في مكان ما ، باستثناء الرمز - وهذا لا يعني التعداد ، وهذه هي النقطة.
لذلك ، لا ينبغي أن يكون التعداد في الكود المرتبط بنوع الجنس على الإطلاق؟
على الرغم من أنني قلت للتو ، يمكن أن يكون التعداد في التعليمات البرمجية مفيدًا للغاية ، حتى إذا كانت تحتوي على قيم تندرج في قاعدة البيانات. ليس من الضروري استخدامها فقط من أجل تخزين القيم التي يتم سحبها من قاعدة البيانات ، بل من الضروري مقارنة ما جاء من قاعدة البيانات بالقيمة المطلوبة. على سبيل المثال ، عندما يريد مبرمج أن يكتب أنه إذا كان جنس الشخصية هو GENERIC_TEEN ، فلن يتمكن من وضع الكحول في قائمة جرده ، يمكنك إنشاء تعداد جنس مع طريقة القيمة التي تُرجع السلسلة وتكتب شفرة تحقق ما إذا كانت الشخصية تحتوي على حقل جنس و Gender.GENERIC_TEEN .value ()، وسوف تكون جيدة، لأنه لن يسمح للمبرمج لتجعل من الخطأ في معنى الوضع.
يجب أن تتطور الكود
الحلول، وقد خدمتنا جيدا في مرحلة ما، يمكن أن تصبح غير مريحة مع مرور الوقت. ويجب علينا أن نضمن أن رمز يعكس الوضع الحالي للمشروع، وليس مجموعة من العكازات مع الحل الذي خلق على الركبة قبل بضع سنوات، امتدت على "هنا والآن". خلاف ذلك ، سيكون مصدرًا لا ينضب من fakap و lulz لكل شخص مرتبط بطريقة أو بأخرى بالمشروع ، سواء كان مطورًا أو مختبريًا أو مستهلكًا مباشرًا.