<aside> 💡

</aside>

اکانت در واقع شناسه ورود به سیستم بازی EA است و شامل ایمیل اکانت بعنوان شناسه و پسورد آن بعنوان رمز ورود به بازی است

ایمیلی که برای ساخت اکانت استفاده میشود توسط EA بعنوان آدرس اکانت شناخته شده و هر گونه اطلاعیه و اعلامیه به آن ارسال میگردد ،توصیه میکنیم برای هر اکانت ایمیل جداگانه و جدای از ایمیل کاری (فقط مختص اکانت EA و PSN اختصاصی همان اکانت باشد) استفاده کنید .

این ایمیل بعد از ساخت اکانت قابل تغییر و جایگزینی است، پسورد اکانت نیز قابل تغییر و یا بازیابی است.

هر شخص دیگری با داشتن ایمیل و پسورد اکانت و با استفاده از کد ورود یکبار مصرف ایمیل شده یا بک آپ کد و یا کد اتنتیکیتور ، امکان ورورد به داخل اکانت را دارد.

فکر کنید یک دیتا کلس داریم

@dataclass
class Order:
    id: UUID
    customer: Customer
    created_at: datetime
    accepted_at: Optional[datetime]
    paid_at: optional[datetime]
    shipped_at: Optional[datetime]

میخوایم این سناریو هارو پیاده سازی کنیم

Order that is received -> Order that is accepted

Order that is accepted -> Order that is paid

Order that is paid -> Order that is shipped

یک تابعی داریم که این چنین کار میکنه:

def ship_order(order: Order) -> Order:

خب طبیعتا مشکلی که وجود میاد اینه که چه چیزی باعث میشه که ما به flow و جریان دیتا احترام بذاریم؟

Order that is received -> Order that is shipped

چطور جلوی این رو میگیریم؟‌باید هردفعه تو ship order کلی چک بنویسیم که ۱۰۰درصد خیالمون راحت باشه که عملیاتی که میشه داره درست انجام میشه. به این کار میگن validation

تازه این یک سناریو ساده بود. همین ولیدیشن باید برای همه توابع دیگه ای که نیاز داریم نوشته شه یعنی:

accept_order

return_order