TGViewer
کدهالیک | codehalic کدهالیک | codehalic @codehalics · 4.15K subscribers
Post #390 439
کدهالیک | codehalic خب امروز می‌خوام یکی دیگه از سوالای مصاحبه‌ای که اگر به عنوان مصاحبه‌کننده باشم از بقیه می‌پرسم رو باهاتون مطرح کنم و نظر شما رو بپرسم. سناریو: جلوگیری از فاجعه در درگاه پرداخت فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک می‌کنه (پرداخت از کیف پول داخلی).…
خب مثل دفعه پیش می‌خوام ریفرتون بدم به یه مقاله عالی از دوست و همکار خوبم محمدجواد ابراهیمی. محمدجواد توی این مطلب خیلی ساده و تمیز مفاهیم اصلی رو باز کرده که خلاصه‌ش می‌شه این:

هر متدی که ما مینویسیم یا هر فانکشنی که مینویسیم باید چند خاصیت داشته باشه همیشه :
Side-effect Free:
یعنی متد ما نباید بره یه جای دیگه از برنامه رو ناخواسته تغییر بده (Shared State ایجاد نکنه).

Idempotent:
یعنی اگه یه تابع رو با ورودی یکسان، ۱۰۰ بار هم صدا بزنیم، نتیجه (خروجی و اثرش) همیشه همون بار اول باشه و سیستم رو به هم نریزه.

Pure Functions:
توابعی که هر دو ویژگی بالا رو دارن و فرشته نجات کد ما هستن!

توی بحث درگاه پرداخت و Race Condition که سوال کردم، اگر کد ما Idempotent نباشه، با هر بار کلیک یوزر، یه فاجعه مالی رخ میده!

حتماً یه زمان ۵ دقیقه‌ای بذارید و اصل مقاله رو بخونید که برای هر برنامه نویسی از نون شب واجب‌تر

https://virgool.io/dotnetzoom/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-side-effect-free-%D9%88-idemponency-%D8%AF%D8%B1-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-gazelp35o4zw

@codehalics | کدهالیک
  • ❤ 3
More from @codehalics
  1. Oct 9, 2026حالا که فهمیدیم WAL چیه، بیاید ببینیم پس بک‌آپ (Backup) این وسط چکاره است؟ فرض کنید WAL هم…
  2. Oct 9, 2026دیتابیس‌ها چطور هم سرعت بالایی دارن و هم با کرش کردن سیستم، دیتا رو از دست نمیدن؟ کلید ماج…
  3. Oct 9, 2026ابزار REA یا همون Reverse Engineer Anything یه ابزار CLI و مبتنی بر پروتکل MCPئه که به ایج…
  4. Oct 8, 2026بوت‌استرپ ۶ نسخه آلفا ۱ منتشر شد و جالب‌ترین تغییرش اینه که رسماً داره می‌ره سمت سبک تیلوی…
  5. Oct 8, 2026کتابخونه Replicant یه ابزار کاربردی تو دات‌نته که با اضافه کردن یه لایه کش رو دیسک برای Ht…
  6. Oct 7, 2026این نکته رو هم اضافه کنم که این مورد داره ۲ اصل از اصول SOLID رو رعایت میکنه ! اول DIP (مع…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →