درس سیزدهم: پیاده‌سازی لایه‌ی مدل

07 اردیبهشت 1399
pyqt13

پیاده سازی لایه‌ی مدل

مدل، لایه ای از کد است که منطق بیزینس برنامه را پیش می برد. در این مورد منطق بیزینس، تمام محاسبات ریاضی می باشد. لایه ی مدل شما عبارات ریاضی از طرف کاربران را ارزیابی خواهد کرد. از این رو که مدل رسیدگی به خطاها را نیز عهده دار است، ثابت زیر را تعریف خواهید کرد:

ERROR_MSG = 'ERROR'

این همان پیغامیست که کاربر موقع وارد کردن عبارت ریاضی نامعتبر خواهد دید.

لایه ی مدل، یک تابع مفرد خواهد بود:

# Create a Model to handle the calculator's operation
def evaluateExpression(expression):
    """Evaluate an expression."""
    try:
        result = str(eval(expression, {}, {}))
    except Exception:
        result = ERROR_MSG

    return result

در اینجا برای ارزیابی یک رشته به عنوان عبارت ریاضی، از ()eval استفاده می کنید و در صورت موفقیت آمیز بودن محاسبات، نتیجه را باز خواهید گرداند. در غیر اینصورت پیغام خطا بازگردانده می شود. توجه داشته باشید که تابع کامل نیست و یک جفت مسئله مهم دارد:

  • بدنه ی try...except هیچ استثناء (انواع خطاهایی که از زمان ساخت تا اجرا و نگهداری برنامه ممکن است رخ بدهند) خاصی را نمی گیرد که عمل شایسته ای در برنامه نویسی پایتون نیست.
  • تابع بر مبنای استفاده از ()eval پایه گذاری شده که ممکن است موارد امنیتی جدی به بار آورد. توصیه ی کلی استفاده از آن فقط برای ورودی های مورد اعتماد می باشد. (()eval موجب تبدیل رشته ها به دستورات یا اعداد پایتونی می گردد، لذا اگر یک ورودی نامعتبر دستورات مخربی را به عنوان رشته به خورد این تابع بدهد خسارت های جبران نشدنی را متحمل خواهید شد)

در هر صورت می توانید روی این تابع کار کنید و امنیت و قابلیت نگهداری آن را ارتقا دهید. در این دوه از تابع چنان که هست استفاده خواهیم کرد.


منبع: سایت Real Python

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری ساخت ماشین حساب گرافیکی با PyQt توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.