پس از سالها پر کردن فرم و انتظار کشیدن، بالاخره مجوز بانکی خود را گرفتهاید. یعنی حالا رسماً میتوانید بانک خودتان را باز کنید، هورا!
اولین اولویتتان راهاندازی سیستمهای فناوری اطلاعات است. پس از یک روز کار سخت، هماکنون میتوانید حساب باز کنید و ببندید و همچنین برداشتها و واریزها را انجام دهید.
چون حوصلهی نوشتن Test را نداشتید، از چند دوست میخواهید که در آزمایش سیستم کمکتان کنند. اما فقط پنج دقیقه بعد، یکی از دوستانتان ادعا میکند که پول از دست داده است! هرچند مطمئنید که کدتان بدون Bug است، شروع میکنید لاگها را بررسی کنید تا بفهمید چه شده است.
آهان، دقیقاً همانطور که حدس میزدید، مقصر خود دوستتان است! او اطلاعات ورود آزمایشیاش را با دوست دیگری به اشتراک گذاشت و با هم توطئه کردند تا بهصورت موازی از همان حساب واریز و برداشت انجام دهند. چه کسی چنین کاری میکند؟
در حالی که شما بحث میکنید که از نظر فیزیکی غیرممکن است کسی بهصورت موازی به حساب خود دسترسی پیدا کند، دوستتان با خودپسندی به شما اطلاع میدهد که قوانین بانکی ملزمتان میکند که از این پشتیبانی کنید. بنابراین، بدون پشتیبانی از بانکداری موازی، سیگنالی برای راهاندازی در کار نیست. آهی میکشید و در ذهن خود یادداشت میکنید که فردا به این موضوع رسیدگی کنید. این کار تاریخ راهاندازی شما را حداقل یک روز دیگر عقب میاندازد، اما خب...
وظیفهی شما پیادهسازی حسابهای بانکیای است که از باز کردن و بستن، برداشت و واریز پول پشتیبانی میکنند.
از آنجا که میتوان از راههای گوناگون به حسابهای بانکی دسترسی داشت (اینترنت، تلفن همراه، کسرهای خودکار)، نرمافزار بانکی شما باید طوری باشد که بتوان بهطور موازی و ایمن از چند ریسمان/فرایند (اصطلاح آن بسته به زبان برنامهنویسی شما متفاوت است) به حسابها دسترسی داشت. برای نمونه، ممکن است واریزها و برداشتهای زیادی بهطور موازی رخ دهند؛ باید مطمئن شوید که میان خواندن موجودی حساب و تنظیم موجودی جدید، «شرایط رقابتی» رخ نمیدهد.
بستن حساب باید ممکن باشد؛ عملیاتی که روی حساب بسته انجام میشود باید با شکست مواجه شود.
برای این تمرین، موازیسازی را آزمون نمیکنیم.
وظیفهی شما این است که متدهای BankAccount را پیادهسازی کنید، بدون آنکه نگران اجرای موازی باشید.
در Exercism ثبتنام کنید تا CoffeeScript را همراه با 97 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.