«کام کر رہا ہے تو مت چھیڑو» — یہ ڈیولپمنٹ کا ایک غیر تحریری اصول ہے جس کے مطابق کام کرنے والے کوڈ کو بغیر کسی ٹھوس وجہ کے نہیں بدلنا چاہیے، چاہے اس کی ساخت غیر موزوں لگے۔ یہ اصول تجرباتی مشاہدے پر مبنی ہے: کوئی بھی تبدیلی نئی غلطی کا خطرہ رکھتی ہے، اور ری فیکٹرنگ کا فائدہ صرف کیے گئے محنت کو جائز نہیں تھہرا سکتا۔ وکیپیڈیا (2026) کے مطابق، یہ محاورہ انجینیرنگ، سیاست اور پروگرامنگ میں تبدیلی کے انتظام کی ایک قدامتی حکمت عملی کے طور پر وسیع پیمانے پر استعمال ہوتا ہے۔
اہم نکات
«کام کر رہا ہے تو مت چھیڑو» — ایک تجرباتی قاعدہ ہے جو ڈیولپرز کو کافی وجوہات کے بغیر کام کرنے والے کوڈ میں تبدیلیاں کرنے سے آگاہ کرتا ہے۔ یہ اصول سادہ شمارات پر مبنی ہے: زیادہ تر خامیاں موجودہ کوڈ میں ترمیم کے دوران متعارف ہوتی ہیں۔
یہ اصول کوئی عقیدہ نہیں ہے — یہ ایک اصول راہ ہے جو غیر یقینی حالات میں فیصلے کرنے میں مدد کرتا ہے۔ کوڈ بیس جتنا زیادہ پیچیدہ اور الجھا ہوگا، اتنا ہی امکان ہے کہ ایک «بے گناہ» تبدیلی کوئی ایسی چیز توڑ دے جس کے ٹوٹنے کی کسی نے توقع نہیں کی تھی۔
Microsoft Corporation کے ایک مطالعے (2024) کے مطابق، پروڈکشن میں تمام تنقیدی واقعات کا تقریبن60% حالیہ کوڈ تبدیلیوں سے متعلق ہے جو نیک نیتوں سے کی گئیں لیکن حقیقی بوج کے حالات میں کافی پرخہ نہیں گئیتھیں۔
محاورہ «اگر یہ ٹوٹا نہیں ہے تو اسے مت مرمت کرو» بیسویں صدی کے اوسط میں امریکی انجینیرنگ ثقافت سے تعلق رکھتا ہے۔ سب سے پہلا دستاویزے شدہ استعمال برٹ لانس (1977) سے منسوب ہے، جو امریکی سینٹ فائنانس کمیٹی میں کام کرتے تھے اور ضرورت سے زائد ضابطے کے خلاف تھے۔
پروگرامنگ میں، یہ اصول ہارڈویئر انجینیرنگ سے آیا ہے، جہاں کام کرنے والی چوپ کو نئی سے بدلنا غیر متوقع نتائج کا سبب بن سکتا تھا۔ سافٹویئر کے سیاق میں، یہ اصول سافٹویئر سیسٹم کی بڑتی ہوئی پیچیدگی اور لگیسی کوڈ کے ابھرار کے ساتھ خاص طور پر مقبول ہوا۔
دلچسپ بات یہ ہے کہ پروگرامنگ میں اس اصول کا الٹ پہلو بھی ہے — «کام کرتا ہے، لیکن بہتر ہے نہ چھیڑا جائے» اکسر ری فیکٹرنگ سے بچنے کا بہانہ بن جاتا ہے، جو طویل مدت میں تکنیکی قرض کے شدید جمع کا سبب بنتا ہے۔ مشاورتی فرم تھاٹ ورکس (2023) کے مطابق، تقریبن 40% مناصب تبدیلیوں کے حوالے سے ضرورت سے زائد قدامت پسندی کی وجہ سے سنگین مسائل کا سامنا کرتے ہیں۔
«کام کر رہا ہے تو مت چھیڑو» کا اصول خاص طور پر ان حالات میں موزوں ہے جہاں غلطی کی لاگت تبدیلیوں کے ممکنہ فائدے سے زیادہ ہوتی ہے۔
لگیسی کوڈ میں جو ٹیسٹ سے کوار نہیں ہے، کوئی بھی تبدیلی روسی رولیٹ کا کھیل ہے۔ اگر ایک ڈیولپر اس بات کی تصدیق نہیں کر سکتا کہ تبدیلی نے متصل ماڈیولز کو نہیں توڑا، تو سب سے بہتر حکمت عملی کام کرنے والے کوڈ کو نہ چھیڑنا ہے۔ مستثنا صرف تنقیدی بگز یا سیکیورٹی کی ضرورتات ہیں۔
ان نظاموں میں جہاں ڈاؤن ٹائم ناقابل قبول ہو یا غلطی کی لاگت بہت زیادہ ہو — میڈیکل سافٹویئر، ایویونکس، فائنانشیال لین دین — اس میں «کام کر رہا ہے تو مت چھیڑو» کا اصول فعلی معمول ہے۔ کوئی بھی تبدیلی کیفی ساتہمنظری اور جائزہ سے گزرتی ہے۔
اگر ریلیز کل ہے اور کوڈ کام کر رہا ہے — تو اس کے آرکیٹیکچر کو برتر کرنے کی کوشش نا کریں۔ صرف وہی بدلیں جو ریلیز کی کارکردگی کو سیدھا متاثر کرتی ہیں۔ ری فیکٹرنگ کو اگلے سپرینٹ پر ملتوی کریں (لیکن اسے نہ بھولیں)۔
| حالت | اصول لاگو کریں؟ | متبادل |
|---|---|---|
| کوڈ کام کرتا ہے لیکن بدصورت ہے | ہاں، اگر ٹیسٹ نہیں ہے | ٹیسٹ لکھیں، پھر ری فیکٹر کریں |
| معروف بگ کے ساتھ کوڈ | نہیں | بگ کو ٹیسٹ کے ساتھ ٹھیک کریں |
| سیکیورٹی کھمی | نہیں | فوری ٹھیک کریں |
| فرسودہ انحصار | مکمل طور پر | ٹیسٹ کے ساتھ اپ ڈیٹ کریں |
| کم کارکردگی | SLA پر منحصر | پروفائل کریں، پھر بہترین کریں |
«کام کر رہا ہے تو مت چھیڑو» اصول کی اندھاں دھون سے پیروی کرنا لا متناہی ری فیکٹرنگ سے کم خطرناک نہیں ہے۔ آئیں بنیادی خطروں کا جائزہ لےتے ہیں۔
ہر ڈیولپر اگر اس اصول پر عمل کرتا ہے، تو کوڈ بیس جلدی ہی فرسودہ حلوں، عارضی حلوں اور غیر موزوں الگورتمز کا «لیر کیک» بن جاتی ہے۔ جلد یا باد، تکنیکی قرض ناقابل برداشت ہو جاتا ہے — کسی بھی تبدیلی کے لیے ہفتوں کا تجزیہ درکار ہوتا ہے۔
کبھی کبھار، ایک تبدیلی جو خطرناک لگتی ہے دراصل کارکردگی یا سیکیورٹی میں بھارگر بہتری لاتی ہے۔ «کام کر رہا ہے تو مت چھیڑو» کا اصول ان تبدیلیوں کو رکنا نہیں چاہیے جو ماپنے قابل فائدے لھایں — سرور اخراجات کم کریں، صفحات کی لوڈنگ تیز کریں، سیکیورٹی بڑھائیں۔
ٹیم جب سالوں کوڈ کے مخفوص حصوں کو نہیں چھیڑتی ، تو وہ سمجھ کھو دیتی ہے کہ وہ کیسے کام کرتے ہیں۔ کلیڈی ڈیولپر چلا جاتا ہے — اور کوڈ بغیر سپورٹ کی صلاحیت کے لیگیسی بن جاتا ہے۔ اس اصول کو مناصبے کی طویل مدتی دیکھریک کو مد نظر رکھتے ہوئے لاگو کرنا چاہیے۔
بہترین حکمت عملی یہ ہے کہ اصول کی اندھاں دھون پیروی نا کریں، بلکہ سیاق کو مد نظر رکھتے ہوئے اسے شعوری طور پر لاگو کریں۔ ری فیکٹرنگ ضروری ہے، لیکن اسے محفوظ ہونا چاہیے۔
پروگرامنگ میں بوئے اسکاؤٹ کا اصول: «کوڈ کو اس صفائی کے ساتھ چھوڑو جو تم نے پایا تھا۔» اگر ایک ڈیولپر ایک ماڈیول میں تبدیلی کر رہا ہے، تو اسے اس کی ساخت میں بہتری لانی چاہیے، لیکن معقول حدود میں۔ سب کُچھ نئے سرے سے نہ لکھیں، لیکن کم از کم نا قابل مطالعہ متغیرات کا نام بدلیں اور تبصرے شامل کریں۔
ٹیسٹ «کام کر رہا ہے تو مت چھیڑو» کے اصول کو محفوظ طور پر لاگو کرنے کا واحد طریقہ ہے۔ اگر کوڈ ٹیسٹوں سے کوار ہے، تو کوئی بھی ری فیکٹرنگ پیش قیاس بن جاتی ہے: ڈیولپر کوڈ بدلتا ہے، ٹیسٹ چلاتا ہے اور دیکھتا ہے کہ کوئی چیز ٹوٹی ہے یا نہیں۔ ٹیسٹ کے بغیر — مت چھیڑو۔ ٹیسٹ کے ساتھ — اعتماد کے ساتھ ری فیکٹر کریں۔
// مثال: ٹیسٹ کواریج کے تحت محفوظ ری فیکٹرنگ
class PriceCalculator {
fun calculatePrice(basePrice: Double, discount: Double): Double {
// پرانا لیکن کام کرنے والا کوڈ
return basePrice - (basePrice * discount / 100.0)
}
}
// تجاوز سے بچانے والا ٹیسٹ
class PriceCalculatorTest {
fun testCalculatePrice() {
val calc = PriceCalculator()
assertEquals(90.0, calc.calculatePrice(100.0, 10.0))
}
}
یہ مثال صحیح طریقے کو ظاہر کرتا ہے: پہلے ٹیسٹ، پھر ری فیکٹرنگ۔ اگر ٹیسٹ پاس ہوتا ہے تو تبدیلی محفوظ ہے۔ «کام کر رہا ہے تو مت چھیڑو» کا اصول بدل جاتا ہے «ٹیسٹ کے تحت کام کرتا ہے تو بہادری سے ری فیکٹر کریں» میں۔
آئیں ان حقیقی مناظر کو دیکھیں جہاں «کام کر رہا ہے تو مت چھیڑو» کا اصول نہ صرف بچاو بلکہ تباہ کن بھی ثابت ہوا۔
ایک ڈیولپر نے دریافت کیا کہ تاریخ پروسیسنگ کا کوڈ YYYY کے بجائے DD/MM/YY فارمیٹ استعمال کر رہا تھا۔ کوڈ 2000 سے 2025 تک صحیح طور پر کام کر رہا تھا۔ اسے «ٹھیک» کرنے کی خواہش کے باوجود، اس نے کوڈ کو جیسا کا تیسا چھوڑ دیا، صرف ایک تبصرہ کیا۔ 2026 میں، کمپنی نے سیسٹم کو اپ ڈیٹ کیا اور نئے حل نے صدیوں کو صحیح طور پر ہنڈل کیا۔ جلد تبدیلی نے کام کرنے والی لاجک کو توڑ دیا ہوتا۔
ایک انجینیئر نے پرانے لیکن کام کرنے والے ڈیٹا ایمپورٹ کوڈ کو ایک جدید لائبریری سے بدل کر «بہتر» کرنے کا فیصلہ کیا۔ اس نے اس حقیقت کو مدنظر نرکھا کہ پرانی لائبریری ایک مخفوص اترفی معاملہ کو ہنڈل کرتی تھی جو دستاویز نہیں تھا۔ ریلیز کے بعد — بلک ملکچر ڈیٹا کا نقصان۔ «کام کر رہا ہے تو مت چھیڑو» کا اصول ویران کیا گیا، اور غلطی کی لاگت ٹیم کے بحالی کے لیے دو ہفتہ کا کام تھا۔
اکثر پوچے جانے والے سوالات
نہیں، اصول کی اندھاں دھون پیروی تکنیکی قرض کے جمع اور مناصبے کی لچیلپی کے نقصان کا سبب بنتی ہے۔ بہترین طریقہ ان حالات میں شعوری استعمال ہے جہاں تبدیلی کا خطرہ ممکنہ فائدے سے زیادہ ہو۔ ہر معاملے کو انفرادی طور پر پرکھنا اہم ہے۔
اصول کی خلاف ورزی سیکیورٹی کی کمزوریوں پانے پر، صارف کے ڈیٹا کو متاثر کرنے والے تنقیدی بگز پانے پر، اور معروف کمزوریوں والے انحصارات کو اپ ڈیٹ کرنے پر ضروری ہے۔ ان حالات میں، غیر فعالی کا خطرہ تبدیلیوں کے خطرے سے زیادہ ہے۔
واحد محفوظ طریقہ یہ ہے کہ پہلے کوڈ کو ٹیسٹوں سے کوار کریں (کیرکٹرائیزیشن ٹیسٹ)، پھر مسلسل ٹیسٹ چلانا جاری رکھتے ہوئے چھوٹے قدموں میں ری فیکٹرنگ کریں۔ ٹیسٹ کے تحفظ کے بغیر، «کام کر رہا ہے تو مت چھیڑو» کا اصول سختی سے نفذ کیا جانا چاہیے۔
تجربہ کار ڈیولپرز شعوری طور پر اصول کی خلاف ورزی کرتے ہیں — وہ موجودہ نفاذ کے غیر واضح نتائج دیکھتے ہیں: مستقبل کے بگز، کارکردگی کی رکاوٹیں، سکیلیبلٹی کے مسائل۔ ان کے فیصلے تبدیلی کے خوف پر نہیں، بلکہ تجربے پر مبنی ہوتے ہیں۔
توازن ٹیسٹنگ اور کوڈ ریویو کی ثقافت کے ذریعے حاصل ہوتا ہے۔ اگر کوڈ ٹیسٹوں سے کوار ہے تو ری فیکٹرنگ محفوظ ہے۔ اگر نہیں ہے تو کوئی بھی تبدیلی حد از حد ضروری ہونی چاہیے۔ «کام کر رہا ہے تو مت چھیڑو» تبدیلیوں پر پابندی نہیں ہے، بلکہ شعور کا تقاضہ ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں