گیٹ 198 بار چلا۔ میں نے اسے "کام کرنا" سمجھا۔
میں نے خراب کوڈ کو روکنے کے لیے ایک گیٹ بنایا۔ اس نے کوڈ کے 198 ٹکڑوں کو بلاک کیا۔ میں نے سوچا کہ اس کا مطلب ہے کہ گیٹ اچھی طرح کام کر رہا ہے۔ میں نے بلاک ہونے کی زیادہ تعداد دیکھی اور خود کو کامیاب محسوس کیا۔
پھر میں نے اصل کیسز کو دیکھا۔ مجھے احساس ہوا کہ ان میں سے بہت سے بلاکس غلطیاں تھیں۔ گیٹ اچھے کوڈ کو مسترد کر رہا تھا۔ اس نے اس کام کو مسترد کر دیا جو تمام ضروریات پر پورا اترتا تھا، صرف اس لیے کہ اس کا ڈھانچہ غیر معمولی لگ رہا تھا۔
میں نے ایک عام غلطی کی۔ میں نے سرگرمی (activity) کو درستی (correctness) سمجھ لیا۔
ایک گیٹ ایک ہی وقت میں بہت زیادہ فعال اور بہت زیادہ غلط ہو سکتا ہے۔ بلاک ہونے کی زیادہ تعداد اہمیت (value) ثابت نہیں کرتی۔ یہ صرف یہ ثابت کرتی ہے کہ گیٹ کام کر رہا ہے۔
یہاں وہ طریقہ ہے جس سے میں نے سیکھا کہ یہ کیسے پہچانا جائے کہ آیا گیٹ واقعی اپنا کام کر رہا ہے یا نہیں:
- بلاک ہونے کی وجوہات کو دیکھیں۔ کیا وہ حقیقی نقائص (defects) کو پکڑتے ہیں؟ یا وہ صرف ایک جیسے ظاہری پیٹرنز (patterns) پر اٹک جاتے ہیں؟
- ری ٹرائیز (retries) پر نظر رکھیں۔ کیا ری ٹرائی اصل مسئلے کو حل کرتا ہے؟ یا کوڈ صرف گیٹ کو خوش کرنے کے لیے اپنی شکل بدل لیتا ہے؟ اگر کوڈ بغیر کسی بہتری کے صرف اپنی شکل بدل لیتا ہے، تو گیٹ خود ایک مسئلہ ہے۔
- حتمی ہم آہنگی (final convergence) کو چیک کریں۔ کیا کام آخر کار اپنی خوبیوں کی بنیاد پر پاس ہو جاتا ہے؟ اگر کام کو پاس کروانے کے لیے آپ کو گیٹ کو کمزور کرنا پڑے، تو گیٹ غلط تھا۔
ایک گیٹ جو اچھی طرح کام کرتا ہے وہ سسٹم کو بہتر بناتا ہے۔ ایک برا گیٹ صرف سسٹم کو گیٹ کے مطابق ڈھالنے پر مجبور کرتا ہے۔ نتیجہ یہ نکلتا ہے کہ آپ کے پاس ایسا کوڈ ہوتا ہے جو اصل میں اچھا ہونے کے بجائے صرف ویلیڈیٹر (validator) کو خوش کرنے کے لیے بنایا گیا ہو۔
کل تعداد (total count) کو دیکھنا بند کریں۔ کل تعداد آپ کو صرف سرگرمی دکھاتی ہے۔ نمونہ (sample) آپ کو حقیقت دکھاتا ہے۔
اپنے گیٹس، لنٹرز (linters) یا فلٹرز کے بلاک کردہ کام کے ایک نمونے کا آڈٹ کریں۔ اگر آپ اپنے گارڈز کو صرف خراب ان پٹ (bad input) کے ساتھ ٹیسٹ کرتے ہیں، تو آپ صرف خوش کرنے والے سوالات پوچھ رہے ہیں۔ آپ کو یہ بھی ٹیسٹ کرنا چاہیے کہ آیا وہ اچھے اور غیر معمولی ان پٹ کو گزرنے دیتے ہیں یا نہیں۔
کیا آپ اپنی بلاک کی تعداد کا آڈٹ کرتے ہیں؟ آپ کیسے فیصلہ کرتے ہیں کہ آیا کوئی مستردی جائز تھی؟
Source: https://dev.to/josephyeo/the-gate-fired-198-times-i-called-it-working-45fk
Optional learning community: https://t.me/GyaanSetuAi