ویرگول
ورودثبت نام
رضا اکبری
رضا اکبریبرنامه نویس frontend
رضا اکبری
رضا اکبری
خواندن ۲ دقیقه·۱ ماه پیش

تجربه من از شکستن قانون Immutable و درس بزرگی که ازش گرفتم

چند وقت پیش در حال ساختن یه پروژه ساده بودم؛ یه دفترچه تلفن که قرار بود فقط اسامی و شماره‌ها رو نگه داره.
اولش فکر می‌کردم کار ساده‌ایه و همه‌چیز طبق برنامه پیش می‌ره، اما بعد از یه مدت متوجه شدم بعضی چیزها درست کار نمی‌کنن.
تغییرهایی توی داده‌ها اتفاق می‌افتاد که انتظارش رو نداشتم، و هر بار باید وقت زیادی صرف می‌کردم تا بفهمم مشکل از کجاست.

بعد از بررسی کدم فهمیدم اشتباه اصلی من این بود که قانون Immutable رو رعایت نکرده بودم.
من داده‌های اصلی پروژه‌م رو مستقیم تغییر می‌دادم، بدون اینکه نسخه‌ای جدید از اون‌ها بسازم.
در واقع داده‌هام Mutable بودن، یعنی قابل تغییر در هر لحظه.
همین باعث شده بود که کنترل روی جریان داده از دستم خارج بشه.

وقتی در مورد مفهوم Immutable بیشتر مطالعه کردم، فهمیدم که این فقط یه قانون سخت‌گیرانه نیست، بلکه روشی برای نوشتن کد قابل‌اعتمادتره.
وقتی داده‌ها Immutable باشن، یعنی هر تغییری باید از طریق ساختن یه نسخه‌ی جدید انجام بشه.
این باعث می‌شه همیشه بدونی کجا و چرا یه داده تغییر کرده، و همین پیش‌بینی‌پذیری کد رو بالا می‌بره.

از طرفی متوجه شدم فانکشن‌هایی که نوشته بودم Pure Function هم نبودن.
یعنی چی؟ یعنی خروجی اون‌ها فقط به ورودی وابسته نبود و به متغیرها و عوامل بیرونی هم تکیه داشتن.
نتیجه این شد که فانکشن‌هام رفتار ثابتی نداشتن و هر بار ممکن بود نتایج متفاوتی بدن.

فانکشن‌های pure باید فقط یه ورودی بگیرن و یه خروجی بدن، بدون اینکه هیچ تغییری در چیزهای بیرون از خودشون ایجاد کنن.
وقتی فانکشن‌هات pure باشن، تست کردنشون راحت‌تره، خطاها قابل پیش‌بینی‌تر می‌شن و ساختار کلی برنامه قابل فهم‌تر می‌مونه.

به مرور فهمیدم که این دو مفهوم — Immutable data و Pure functions — به هم وابسته‌ان.
وقتی داده‌ها Immutable باشن، فانکشن‌ها هم راحت‌تر pure باقی می‌مونن، چون هیچ تغییری در بیرون از خودشون انجام نمی‌دن.
این ترکیب باعث می‌شه برنامه‌ت تمیزتر، قابل نگهداری‌تر و مطمئن‌تر بشه.

این تجربه برای من یه نقطه‌ی عطف بود.
حالا وقتی کد می‌نویسم، همیشه سعی می‌کنم از همون ابتدا داده‌هام رو Immutable در نظر بگیرم و فانکشن‌هام رو pure نگه دارم.
نتیجه‌اش هم واضحه: کدی که کمتر خراب می‌شه، راحت‌تر تست می‌شه و اعتماد بیشتری بهش دارم.

در نهایت فهمیدم رعایت همین اصول ساده می‌تونه تفاوت زیادی در کیفیت کدی که می‌نویسی ایجاد کنه.
شاید اولش کمی سخت به نظر بیاد، ولی وقتی اثرش رو در طول زمان ببینی، دیگه هیچ وقت سراغ روش‌های قدیمی برنمی‌گردی.

✍️ نویسنده: [رضا اکبری ]
📍 لینکدین: [https://www.linkedin.com/in/reza-akbari-a576a9378/]

javascriptprogramming
۲
۰
رضا اکبری
رضا اکبری
برنامه نویس frontend
شاید از این پست‌ها خوشتان بیاید